MySQL クエリでバックスペース文字とタブ文字をエスケープする必要があるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-27 22:11:02
オリジナル
990 人が閲覧しました

  Why Should Backspace and Tab Characters Be Escaped in MySQL Queries?

MySQL インジェクションと文字エスケープ

MySQL API の mysql_real_escape_string() 関数を使用する場合、すべての脆弱な文字がSQL インジェクションを防ぐためにエスケープされます。 MySQL のドキュメントでは、次の文字はエスケープする必要があると規定されています:

<pre class="brush:php;toolbar:false">0x00 : "\0",
0x08 : "\b",
0x09 : "\t",
0x1a : "\Z",
0x22 : '\"',
0x25 : "\%",
0x27 : "\'",
0x5c : "\\",
0x5f : "\_",
ログイン後にコピー
\n \r \ ' " \Z

ただし、このリストを ESAPI の Python ポートと比較すると、次のような追加の文字がエスケープ対象として特定されます。

SELECT a FROM b WHERE c = '...user input ...';
ログイン後にコピー

バックスペース (b) およびタブレータ (t) 文字をエスケープする必要性に関して生じます。

クエリのアドレス指定

"\bDELETE_MY_DATABASE"
ログイン後にコピー

ユーザー入力にタブレータまたはバックスペースが含まれる場合文字を使用すると、セキュリティ上のリスクが生じる可能性があります。悪意のある攻撃者がユーザー入力の末尾に次の文字列を含むシナリオを考えてみましょう:

データベースに渡されると、バックスペース文字によって先行の一重引用符が消去され、悪意のある DELETE が実行されます。 query.

ESAPI セキュリティ ライブラリ

ESAPI セキュリティ ライブラリには、潜在的なセキュリティ問題のためエスケープするためのバックスペース文字とタブ文字が組み込まれています:

  • タブレータ (t): 文字列内のタブ文字はデータベースの予期された動作を妨害する可能性があり、攻撃者がデータを操作したり、悪意のあるクエリを挿入したりできる可能性があります。
  • Backspace (b): catting ファイルの例で見られるように、バックスペース文字は以前に入力された文字を上書きする可能性があるため、悪意のあるコードが目に見えずにクエリの先頭に追加される可能性があります。

結論

したがって、MySQL クエリでユーザー入力を処理する場合は、注意して ESAPI のセキュリティ ライブラリで指定されているすべての文字をエスケープすることをお勧めします。バックスペースやタブレータなどの特定の文字は本質的に危険ではないように見えますが、他のメカニズムと組み合わせた影響は重大なセキュリティ上の脅威を引き起こす可能性があります。

以上がMySQL クエリでバックスペース文字とタブ文字をエスケープする必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!