虽然addslashes() 的目的是转义特殊字符,但它在提供针对特殊字符的全面保护方面存在不足。 SQL注入攻击。相比之下,mysql_real_escape_string() 通过解决更广泛的有问题的字符来提供增强的安全性。
具体来说,mysql_real_escape_string() 向以下字符添加斜杠:
\x00, \n, \r, \, ', " and \x1a.
此增强的字符集确保不仅单引号和双引号被转义,就像使用addslashes()一样,而且其他潜在的恶意字符也被中和。
为了说明这种差异,请考虑以下示例:
$string = "' OR 1=1"; $addslashes_example = addslashes($string); // Escapes only single and double quotes $mysql_rescape_example = mysql_real_escape_string($string); // Escapes single, double, and \x1a characters echo $addslashes_example; // Outputs: \' OR 1=1 echo $mysql_rescape_example; // Outputs: \' OR 1=1\'
如所示,mysql_real_escape_string() 通过防止执行精心设计的 SQL 注入攻击来提供更强大的保护,而 addslashes() 会使系统容易受到攻击。重要的是要承认 mysql_real_escape_string() 和addslashes() 都已被弃用并且不再建议使用。相反,应该采用参数化查询来实现安全高效的数据库交互。
以上是mysql_real_escape_string() 如何在对抗 SQL 注入方面超越 addslashes()?的详细内容。更多信息请关注PHP中文网其他相关文章!