ホームページ >バックエンド開発 >PHPチュートリアル >`mysql_real_escape_string()` と `mysql_escape_string()` はアプリケーションを保護するのに十分ですか?
mysql_real_escape_string() と mysql_escape_string() はアプリのセキュリティに十分ですか?
mysql_real_escape_string() SQL インジェクション攻撃を防ぐためによく使用される関数です。これにより、特殊文字がエスケープされた文字に置き換えられ、攻撃者が悪意のある SQL コードをクエリに挿入することが困難になります。
mysql_real_escape_string() の制限の 1 つは、変数データのみをエスケープすることです。テーブル名、列名、または LIMIT フィールドをターゲットとする攻撃には効果がありません。たとえば、攻撃者は、LIKE 演算子を使用して「%%」のような値を検索し、すべてのレコードを返すことにより、クエリに悪意のある SQL を挿入する可能性があります。
さらに、mysql_real_escape_string() は以下に対してのみ有効です。既知の SQL インジェクション攻撃。データベース サーバーの脆弱性を悪用する新しい攻撃や未知の攻撃から保護することはできません。
エスケープなどの事後対策に頼るのではなく、プリペアド ステートメントを使用することをお勧めします。 。準備されたステートメントは、実行前にデータベース サーバーによってプリコンパイルされる SQL ステートメントです。これにより、サーバーはプリコンパイルされたステートメントのみを実行するため、悪意のある SQL がクエリに挿入されるのを防ぎます。
プリペアド ステートメントは、SQL を処理するように設計されているため、SQL インジェクションやその他の攻撃に対する予防的な防御となります。安全な方法で。脆弱性が発生しにくく、エスケープよりも高いレベルのセキュリティが提供されます。
以上が`mysql_real_escape_string()` と `mysql_escape_string()` はアプリケーションを保護するのに十分ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。