1

このステートメントを特殊文字の挿入から安全にしようとしています。値が「Women's」の変数タイプなど、これを処理するにはクエリをどのように再フォーマットすればよいでしょうか? ただし、パラメーター化されたクエリが最適であることはわかっています。それは今の選択肢ではありません。

var sqlStatement = "SELECT DISTINCT DN FROM tbl1 WHERE Media LIKE "+ media + "% AND Type = " + type + "";
4

2 に答える 2

1

ここでの最良のリソースは OWASP です ( SQL インジェクション防止のチート シートを参照してください)。繰り返しますが、最善の策は次の順序で解決策を試すことです。

  1. 準備されたステートメント
  2. ストアド プロシージャ
  3. ユーザー入力のエスケープ

SQL Server のクエリをエスケープすることに完全に設定されている場合は、この MSDN の記事、具体的には入力のエスケープセクションを参照できます。ホワイト リストを実装してユーザー入力をさらに検証できる場合は、なおさらです。

于 2012-10-09T22:50:14.033 に答える
0

ただし、パラメーター化されたクエリが最適であることはわかっています。それは今の選択肢ではありません。

それが「今のところ選択肢ではない」のはなぜですか?

データ全体が危険にさらされたり破壊されたりすることは「今の選択肢」ですか? あなたのURLを投稿してもよろしいですか?

クエリをパラメータ化しない場合、SQL インジェクションを確実に防ぐ確実な方法はありません。

于 2012-10-08T13:54:12.383 に答える