评估 mysql_real_escape_string() 针对亚洲编码 SQL 注入的安全性
问题:
已报告一个安全漏洞,声称可以使用特定的亚洲字符编码(例如 BIG5 或 GBK)绕过 mysql_real_escape_string()。这个漏洞是否有效?如果有效,我们如何在不使用准备好的语句的情况下缓解它?
答案:
根据 PHP 开发人员 Stefan Esser 的说法,mysql_real_escape_string( ) 当某些编码设置被设置时,不能完全安全地防止 SQL 注入
说明:
使用 SET NAMES 命令更改数据库字符编码时会出现此问题。编码中的这种更改会影响特殊字符(例如反斜杠 ())的转义方式。 mysql_real_escape_string() 采用默认编码,并且不会相应地调整其转义逻辑。
因此,如果攻击者使用允许反斜杠作为后续字节的编码,mysql_real_escape_string() 可能无法正确转义这些字符。这可能会导致成功的 SQL 注入攻击。
缓解措施:
要在预备语句不可用时解决此漏洞:
以上是mysql_real_escape_string() 是否容易受到亚洲编码的 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!