0

ユーザーが C# (.NET) で開発されたフォーム エントリに「サムのプロジェクト成果物」などの入力テキストを入力するときに、一重引用符をエスケープしたいと考えています。データベースは ORACLE 10g です。

ORACLE 10g http://www.orafaq.com/wiki/SQL_FAQ#How_does_one_escape_special_characters_when_writing_SQL_queries.3Fから提供される引用区切り機能に出会いましたが、そのような引用区切り文字q'[ 一重引用符のあるテキスト]'を一部として使用するかどうかはわかりませんSELECT ステートメントのSQL インジェクション攻撃を防止できますか?

引用区切り文字 q'[ 一重引用符付きのテキスト ]' の使用例:

SQL> SELECT q'[Frank's Oracle site]' AS text FROM DUAL;
 TEXT
 -------------------
 Frank's Oracle site

 SQL> SELECT q'[A 'quoted' word.]' AS text FROM DUAL;
 TEXT
 ----------------
 A 'quoted' word.

 SQL> SELECT q'[A ''double quoted'' word.]' AS text FROM DUAL;
 TEXT
 -------------------------
 A ''double quoted'' word.
4

2 に答える 2

5

クエリが次のような場合...

query = "SELECT * FROM Users WHERE name = q'[" + <what the user entered> + "]'";

...そして、ユーザーはこのようなものを入力します...

abc]';<harmful statement>;SELECT * FROM DUAL WHERE '1'=q'[1

...彼らは注射に成功するでしょう。

で使用する区切り文字は問題ではありませんq- 断固たる攻撃者はそれらすべてを試します。準備されたステートメントは、最善の防御策です。

于 2013-04-23T16:15:09.653 に答える