mysql_real_escape_string() は SQL インジェクションに対する完全な保護を提供しますか?
特定のアジアの文字エンコーディングが mysql_real_escape_string() を回避できるという最近の主張がオンラインで広まっています。 SQL インジェクション攻撃に対する保護手段をバイパスする可能性があります。これらの懸念に対処するために、この記事ではこの主張の真実性を掘り下げ、代替の保護戦略を検討します。
mysql_real_escape_string() のバイパスは可能ですか?
Stefan Esser 氏、有名なセキュリティ専門家、mysql_real_escape_string() の有効性が損なわれる可能性があることを確認SET NAMES (現在の文字セットを変更するコマンド) を使用する場合。これは、mysql_real_escape_string() がエンコーディングの変更を認識しないために発生します。その結果、文字がマルチバイト エンコーディング内の 2 番目、3 番目、またはそれ以降のバイトとして出現する場合、文字を適切にエスケープできません。 UTF-8 はこの脆弱性の影響を受けませんが、他のマルチバイト エンコーディングは悪意のある攻撃者にこの脆弱性を悪用する方法を提供する可能性があります。
リスクの軽減
Web サイトを保護するにはこの潜在的な脆弱性に対して、次のような代替保護手段の導入を検討してください。次のように:
結論
mysql_real_escape_string() は SQL インジェクションから保護するための有用なツールであり続けます、特定の文字エンコード方式から完全に保護できない場合があります。 Web アプリケーションの整合性を維持するには、準備されたステートメントなどの追加の保護手段を実装することが不可欠です。
以上が「mysql_real_escape_string()」は完全な SQL インジェクション保護を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。