尽管 mysql_real_escape_string() 被广泛使用,但它并不能免受 SQL 注入攻击。
要求:数据库连接必须使用易受攻击的字符集,如big5、cp932、gb2312、gbk或sjis。
步骤:
结果:由于客户端与服务器编码不匹配,查询中包含未转义的单引号,导致 SQL 注入成功。
mysql_real_escape_string() 中的错误: 中在早期的 MySQL 版本中,即使客户端知道连接编码,无效的多字节字符也会被视为单字节以进行转义。
PDO 漏洞: PDO 中的模拟准备语句是使用mysql_real_escape_string(),因此容易受到此攻击。
安全做法:
以上是SQL注入可以使用字符集操作绕过`mysql_real_escape_string()`吗?的详细内容。更多信息请关注PHP中文网其他相关文章!