評估mysql_real_escape_string() 的完整性
人們對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中,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() 仍然是針對 SQL 注入的可靠保護嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!