ホームページ >バックエンド開発 >PHPチュートリアル >addslashes() は本当に SQL インジェクション攻撃を防ぐことができるのでしょうか?

addslashes() は本当に SQL インジェクション攻撃を防ぐことができるのでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-01 15:10:11878ブラウズ

Can addslashes() Really Prevent SQL Injection Attacks?

addslashes() による SQL インジェクションを理解する

addslashes() は、SQL インジェクションを防ぐために文字列内の特殊文字をエスケープするために一般的に使用される PHP 関数です。攻撃します。ただし、その意図にもかかわらず、まれに実際にはそのような攻撃を促進する可能性があります。

例を詳しく見てみましょう:

シナリオ: ユーザーが入力 "' OR 1=1 -- - を送信します。 " をテキスト フィールドに変換します。

addslashes() は入力を "' OR 1=1 -- -" に変換しますが、データベースのエンコーディングがたまたま Shift-JIS などのマルチバイト文字をサポートしていると、アポストロフィがマルチバイト文字の一部として解釈され、意図したエスケープが効果的に損なわれてしまいます。

その結果、変更された SQL クエリは次のようになります。 %OR 1=1 -- -"

アポストロフィはエスケープ シーケンスとして扱われなくなったため、この変更されたクエリは SQL インジェクション攻撃の実行に成功します。むしろマルチバイト文字の一部です。

以上がaddslashes() は本当に SQL インジェクション攻撃を防ぐことができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。