ホームページ >データベース >mysql チュートリアル >mysql_real_escape_string() は SQL インジェクションの脆弱性に対して本当に効果的ですか?
Web セキュリティの領域では、SQL インジェクションに対する保護が最も重要です。一般的に使用されるアプローチの 1 つは、mysql_real_escape_string() を使用してユーザー入力をサニタイズすることです。ただし、その完全な有効性については議論が浮上しています。
mysql_real_escape_string() を BIG5 や GBK などの特定の文字エンコーディングで使用した場合、SQL インジェクションを完全に保護できない可能性があるという懸念が提起されています。その前提は、シングルバイト文字がマルチバイト文字と結合され、意図されたエスケープメカニズムのバイパスを可能にする可能性にあります。
専門家の意見は、SET NAMES が使用される場合、mysql_real_escape_string() には実際に制限があることを示唆しています。文字エンコーディングを変更します。これは、mysql_real_escape_string() がエンコーディングの変更とは独立して動作し、誤ったエスケープにつながる可能性があるためです。
文字エンコーディングを管理するための代替手段の 1 つは、新しい PHP バージョンで導入された mysql_set_charset です。この方法は、文字セットを変更するためのより安全なアプローチを提供します。
mysql_real_escape_string() は SQL インジェクション防止のために広く使用されているツールですが、潜在的な脆弱性を認識しておくことが重要です。準備されたステートメントがオプションではない場合は、mysql_real_escape_string() の使用を、追加のセキュリティ対策 (たとえば、適切なユーザー管理の実践など) で補完する必要があります。
以上がmysql_real_escape_string() は SQL インジェクションの脆弱性に対して本当に効果的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。