広く使用されているにもかかわらず、mysql_real_escape_string() は SQL インジェクション攻撃の影響を受けないわけではありません。
要件: データベース接続では、big5、cp932、gb2312、gbk、sjis などの脆弱な文字セットを使用する必要があります。
手順:
結果: クライアントとサーバーのエンコードが一致していないため、クエリにはエスケープされていない一重引用符が含まれており、SQL インジェクションは成功します。
バグインmysql_real_escape_string(): 以前の MySQL バージョンでは、クライアントが接続エンコーディングを認識していても、無効なマルチバイト文字はエスケープ目的で単一バイトとして扱われていました。
PDO の脆弱性: PDO でエミュレートされたプリペアド ステートメントは mysql_real_escape_string() を使用して構築されるため、この脆弱性に対して脆弱です。
安全な方法:
以上がSQL インジェクションは文字セット操作を使用して「mysql_real_escape_string()」をバイパスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。