mysql_real_escape_string() は SQL インジェクションに対して脆弱ですか?
SQL インジェクションの防止における mysql_real_escape_string() の有効性に関して懸念が提起されています。一部の古い記事では、この関数には欠陥がある可能性があると示唆されています。
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.
したがって、最大限のセキュリティを確保するには、SET NAMES/SET CHARACTER SET ではなく、mysql_set_charset() を使用してエンコーディングを変更することが重要です。これは、mysql_set_charset() が MySQL の mysql_set_character_set() 関数と連携しており、mysql_real_escape_string() で使用される文字セットに影響を与えるためです。
これらのガイドラインに従うことで、mysql_real_escape_string() を効果的に使用してクエリを SQL インジェクションから保護できます。 .
以上がmysql_real_escape_string() は依然として SQL インジェクションに対する安全策ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。