ホームページ > バックエンド開発 > PHPチュートリアル > mysql_real_escape_string() は依然として SQL インジェクションに対する信頼できる保護ですか?

mysql_real_escape_string() は依然として SQL インジェクションに対する信頼できる保護ですか?

Susan Sarandon
リリース: 2024-11-11 16:31:03
オリジナル
681 人が閲覧しました

Is mysql_real_escape_string() Still a Reliable Protection Against SQL Injection?

mysql_real_escape_string() の整合性の評価

SQL インジェクション攻撃からデータベース クエリを保護する際の mysql_real_escape_string() の信頼性に関して懸念が提起されています。批評家は、適切な保護を提供する関数の能力に潜在的な欠陥があることを示唆する古い記事を参照しています。

MySQL のドキュメント

mysql_real_escape_string() の MySQL C API ドキュメントは、この懸念を認めています。

If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.
ログイン後にコピー

PHP の対応物

PHP では、mysql_set_charset() は MySQL の mysql_set_character_set() と同様の方法で機能し、PHP の対応物として機能します。

Proofcode

<?php
$str = "'mystring'";

// Set encoding
mysql_set_charset('utf8');

// Escape string with correct encoding
$escaped_str = mysql_real_escape_string($str);
ログイン後にコピー

mysql_real_escape_string() を使用する前に、mysql_set_charset() を利用してエンコーディングを変更することで、文字セットが正しく設定され、関数が意図したとおりに動作することを保証します。これにより、潜在的な脆弱性に関する懸念が解決され、mysql_real_escape_string() が SQL インジェクション攻撃から効果的に保護できるようになります。

以上がmysql_real_escape_string() は依然として SQL インジェクションに対する信頼できる保護ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート