addslashes() による SQL インジェクションのリスクを理解する
PHP プログラミングの領域では、SQL インジェクションに対する保護はデータ セキュリティの重要な側面です。 mysql_real_escape は信頼できる防御策として認識されていますが、addslashes() が SQL インジェクションのリスクをどの程度もたらすかは依然として不明瞭な場合があります。この記事は、addslashes() がそのような攻撃にどのように寄与するかの例を明らかにすることで、これを明確にすることを目的としています。
ジレンマの核心は、addslashes() がマルチバイト文字内にバックスラッシュを挿入する可能性があることにあります。これにより、意図したエスケープ シーケンスが中断され、悪意のある文字が侵入してデータベース クエリを操作できるようになる可能性があります。
例として、次のペイロードを考えてみましょう。
username = 'lilac\';--
addslashes() の対象となる場合:
username = addslashes('lilac\';--');
結果:
username = 'lilac\'\;--'
このシナリオでは、意図した脱出シーケンスは阻止され、行コメントが埋め込まれた有効な文字列として 'lilac';-- が残ります。このコメントは、検証をバイパスしてクエリを操作するために悪用される可能性があります。
この攻撃は、特定の文字エンコーディング、特に 0x5c (バックスラッシュ) で終わるマルチバイト文字を使用するものに依存していることに注意することが重要です。ただし、UTF-8 は、許容されるマルチバイト文字がこのパターンに準拠していないため、この脆弱性から除外されます。
したがって、addslashes() は基本的な文字列の衛生管理で役割を果たす可能性がありますが、それだけに依存すべきではありません。 SQL インジェクションを防止するためのものです。より安全なアプローチは引き続き mysql_real_escape であり、マルチバイト文字を効果的に処理し、そのような攻撃に対してより堅牢な保護を提供します。
以上が「addslashes()」は SQL インジェクション攻撃に対して十分な保護を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。