首页 > 数据库 > mysql教程 > `mysql_real_escape_string()` 是针对所有字符编码中的 SQL 注入的可靠防御吗?

`mysql_real_escape_string()` 是针对所有字符编码中的 SQL 注入的可靠防御吗?

Mary-Kate Olsen
发布: 2024-12-01 03:21:17
原创
154 人浏览过

Is `mysql_real_escape_string()` a Reliable Defense Against SQL Injection in All Character Encodings?

mysql_real_escape_string() 是抵御 SQL 注入的坚不可摧的盾牌吗?

justinshattuck.com 上的一个部分表明 mysql_real_escape_string() 在某些情况下容易出错亚洲字符编码。具体来说,它声称编码绕过 mysql_real_escape_string() 使用 BIG5 或 GBK 将危险字符偷运到查询中。

这个漏洞是真的吗?

根据 Stefan Esser,答案是令人不安的“是”。他声称当使用 SET NAMES 时 mysql_real_escape_string() 会出现问题。此方法切换编码以满足应用程序的需要,而无需通知 mysql_real_escape_string()。因此,如果多字节编码允许反斜杠作为第二个、第三个或第四个字节,则会出现问题。 Mysql_real_escape_string() 仍然没有注意到这种不规则性,并且无法正确转义字符。

保护您的网站

Esser 建议 UTF-8 仍然是安全的编码,但 UTF -8 并不总是一个选项。不幸的是,更安全的替代方案 mysql_set_charset 仅在最近的 PHP 版本中可用。

以上是`mysql_real_escape_string()` 是针对所有字符编码中的 SQL 注入的可靠防御吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板