2011-09-26 29 views
0

我正在构建自己的PHP框架,并且希望每个请求都将每个获取和后缀变量转换为utf8(我在当前项目中的任何地方都不使用其他编码)以防止我的来自“无效编码攻击”或binary atack的项目。我在php.net中发现了utf8_encode,但它表示仅将ISO-8859-1转换为UTF8。我想知道将所有内容都转换为utf8是否是一件大事,或者这与安全性无关(我想尽可能减少安全漏洞)。将字符串编码转换为UTF-8

回答

1

@nikolay,mb_convert_encoding()是你的朋友。看看here

此外,如果您将所有网页的编码设置为UTF-8,则无需手动转换。这种添加到每个页面的head部分:

<meta charset="utf-8" /> 
1

如果你的目标是保护自己免受无效编码攻击,那么你应该在你的GET使用

mb_check_encoding() 

/POST值在使用它们之前。

但是你不需要转换任何东西 - 例如使用mb_convert_encoding():如果您使用适当的Content-Type和meta >标记,则指定您的页面使用UTF-8,但您可以保证普通用户只会向您发送UTF-8。