解决 mysql_real_escape_string() 的缺陷
尽管它在 PHP 应用程序中广泛使用,但有些人对 mysql_real_escape_string() 的安全漏洞提出了担忧)。此函数旨在通过转义用户输入中的特殊字符来防止 SQL 注入攻击。
mysql_real_escape_string() 完全不够吗?
MySQL C API 文档承认潜在的mysql_real_escape_string() 的问题。它建议避免使用 SET NAMES/SET CHARACTER SET 语句来更改连接的字符集。相反,应该在使用 mysql_real_escape_string() 之前调用函数 mysql_set_character_set()。
证明代码
PHP 函数 mysql_set_charset() 修改 mysql_real_escape_string 使用的字符集()。下面的代码片段对此进行了说明:
<?php // Connect to MySQL and select the database $link = mysqli_connect("localhost", "user", "password", "database"); // Set the character set for the connection mysql_set_charset($link, "utf8"); // Escape the input using mysql_real_escape_string() $escaped_input = mysql_real_escape_string($link, $input); // Use the escaped input in a SQL query $query = "SELECT * FROM table WHERE field = '$escaped_input'";
通过遵循此方法,可以显式设置 mysql_real_escape_string() 使用的字符集,确保特殊字符正确转义。
以上是`mysql_real_escape_string()` 真的能够防止 SQL 注入吗?的详细内容。更多信息请关注PHP中文网其他相关文章!