什么是从我的PHP网站过滤无效的utf8?

时间:2011-10-24 00:39:09

标签: php utf-8 utf mbstring

我的网站完全转换为使用utf-8,(mysql,http标头,PHP mb_string等)。

我正在进行一些渗透测试并尝试将无效的utf POST到其中一个脚本(使用BurpSuite)。

但是当我发布无效的utf时,只是十六进制转储$ _POST var,我看到无效的utf序列在我尝试使用mb_detect_encoding进行验证之前已经被清理过了。

这听起来对我来说是个好消息,但我想知道哪一层正在改变POST数据?

它是Content-Type HTTP Header的副作用,也许我的网络服务器正在这样做(lighttpd)。或者,在填充$ _POST时,它本身就是PHP吗?

我希望看到无效的utf hexdumped,让我自己清理它。

1 个答案:

答案 0 :(得分:1)

PHP本身不会过滤POST数据,它只是将其作为二进制数据处理,它始终是“有效的”(它只是数据,无需验证)。

因此,我怀疑您的网络服务器有一些模块正在更改数据,或者有一些PHP扩展正在过滤数据。

检查您的网络服务器是否安装了网络防火墙,以及您使用PHP加载的扩展程序列表以及是否存在与输入过滤相关的内容。