在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string
用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情报: 以上字符是中国Big5
用BIG5或GBK绕过mysql_real_escape_string()
“注入线” に关する追加情报:
以上字符是中国Big5
这是真的吗?如果是的话,如果您无法访问准备好的陈述,那么如何保护您的网站呢?
根据Stefan Esser的说法, “mysql_real_escape_string()[ SET NAMES使用时不安全] 。”
mysql_real_escape_string()
SET NAMES
来自他的博客的解释:
SET NAMES通常用于将编码从默认设置切换到应用程序需要的设置。这是mysql_real_escape_string不知道的方式完成的。这意味着,如果您切换到允许反斜杠作为2nd 3rd 4th…字节的多字节编码,则会遇到麻烦,因为mysql_real_escape_string无法正确转义。UTF-8是安全的… 更改编码的安全方法是mysql_set_charset,但这仅在新的PHP版本中可用
SET NAMES通常用于将编码从默认设置切换到应用程序需要的设置。这是mysql_real_escape_string不知道的方式完成的。这意味着,如果您切换到允许反斜杠作为2nd 3rd 4th…字节的多字节编码,则会遇到麻烦,因为mysql_real_escape_string无法正确转义。UTF-8是安全的…
mysql_real_escape_string
更改编码的安全方法是mysql_set_charset,但这仅在新的PHP版本中可用
mysql_set_charset
他确实提到UTF-8是安全的。