私は.NET2.0でプログラムを作成しています。使用する前に入力をエスケープする必要があります。残念ながら、私が使用しているシステムでは、標準パラメータメソッドシステムは完全には機能しません。 ODBCCommandクラスを使用して、私は? (私がやっているちょっとしたことのために必要な)ステートメントの選択部分のパラメータを、エラーを出さずに返すことができるので、一重引用符( ')を含んでも含まなくてもよい文字列を手動でエスケープする必要があります。助言がありますか?SQLの文字列をエスケープする標準機能
編集 - 例SQL:
私はそれをしたいと思い通り:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT (?, COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
そのまま:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT ('INPUT_VALUE_HERE', COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
編集:Sybase ASEのは、ODBC
を通じて、DBドライバです
実行しようとしているSELECTの例を挙げることはできますか? – Steven
これは、列名やテーブル名などの場合、攻撃者が注入を行うために一重引用符を必要としないことを忘れないでください。さもないと ?働くはずですね。 –
また、どのデータベースを使用していますか?すべてのデータベースが同じエスケープ文字セットを持っているわけではなく、SELECTステートメントのどこに応じて異なるエスケープ文字が必要かによって異なります。 – Steven