私は、現在 SQL インジェクション保護が欠けているクラシック ASP コードを大量に継承しており、それに取り組んでいます。ここで提供されているソリューションを詳細に調べました:クラシック ASP SQL インジェクション保護 データベース側では、Microsoft SQL サーバー 2000 SP4 を使用しています。
残念ながら、ストアド プロシージャはオプションではありません。
php の mysql_real_escape_string ( http://www.w3schools.com/php/func_mysql_real_escape_string.asp ) を調べた後、その機能を ASP で複製しました。
私の質問は次のとおりです。
1) Microsoft SQL Server 2000 には、MySQL に存在しない、エスケープする必要があるその他の特殊文字 ( \x00 、 \n 、 \r 、 \ 、 ' 、 " 、 \x1a ) がありますか?
2)単一引用符をエスケープし、ユーザー入力を単一引用符で囲むことにより、SQL インジェクションから保護できますか?の回答から 「「引数の引用」手順に対する攻撃を開始する 1 つの方法は、文字列の切り捨てです。MSDN によると、SQL Server 2000 SP4 (および SQL Server 2005 SP1) では、長すぎる文字列は静かに切り捨てられます。」
これを攻撃にどのように使用できますか (そのようなシナリオは本当に想像できません)、それを防ぐ正しい方法は何でしょうか?
3) 他に注意すべき点はありますか? SQLを注入する他の方法はありますか?
注: 30 分間のインターネット検索では、SQL インジェクションから保護する従来の ASP 用のライブラリは存在しないことがわかりました。そうですか、それとも検索という基本的なタスクで本当に失敗したのでしょうか。