MySQL インジェクション防止: セキュリティを最大限に高めるための文字のエスケープ
SQL インジェクションの防止は、データベースを悪意のある攻撃から保護するために重要です。 mysql_real_escape_string() 関数を使用する場合、文字、n、r、\、'、"、および Z は、注入試行を防ぐためにエスケープされます。
ただし、OWASP.org の ESAPI セキュリティ ライブラリには、エスケープ用の追加文字が含まれています。 b (バックスペース) と t (タブ文字) を含む。なぜこれらの文字が含まれているのか、そして本当に必要なのか?
エスケープ防止のタブ文字とバックスペース文字
ESAPI エスケープ メカニズムに b および t 文字が含まれることは、これらの文字を使用した注入試行の可能性に関連している可能性があります。次のシナリオを考えてみましょう:
攻撃者は、次のようなテキスト ファイルを添付した電子メールを送信します。 query:
INSERT INTO students VALUES ("Bobby Tables",12,"abc",3.6);
これは無害なクエリのように見えますが、次のように攻撃者はクエリの前にバックスペース文字を巧妙に配置しています。
DROP TABLE students;\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
受信者がファイルを cat したとき。それを MySQL にパイプすると、バックスペース文字が無害なクエリを上書きし、悪意のある DROP TABLE Student が生成されます。
さらに、タブ文字 (t) は、クエリ内で悪意のあるコードを整列させるために使用される可能性があり、可読性が向上し、検出がより困難になります。したがって、これらの文字をエスケープすると、潜在的なインジェクションの試みに対する追加の保護層が提供されます。
以上がESAPI が SQL インジェクション防止でバックスペース (\b) 文字とタブ文字 (\t) 文字をエスケープするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。