揭穿所謂的缺陷:探索mysql_real_escape_string() 的可靠性
儘管聲稱mysql_real_escape_string() 存在缺陷,但有證據表明它提供證據表明它提供缺陷了穩健的功能使用時防止SQL注入漏洞
對所謂缺陷的審查表明,它們通常源於不當使用或過時的資訊。正如 MySQL C API 文件明確指出的那樣,使用 mysql_set_character_set() 而不是 SET NAMES 或 SET CHARACTER SET 語句設定字元集至關重要。後面的選項不會影響 mysql_real_escape_string() 使用的字元集。
PHP 的 mysql_set_charset() 與 MySQL 的 mysql_set_character_set() 相對應。透過利用它來修改編碼,開發人員可以確保相容性並規避潛在問題。
程式碼範例:
<?php $mysqli = new mysqli('host', 'user', 'password', 'database'); $mysqli->set_charset('utf8mb4'); // Set utf8mb4 encoding // Example usage of mysql_real_escape_string() $escaped_string = mysql_real_escape_string($mysqli->connect_errno, $_POST['username']);
這種方法有效地設定字元集並使用 mysql_real_escape_string( ),降低 SQL 注入攻擊的風險。
以上是mysql_real_escape_string() 真的有缺陷,還是只是被濫用了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!