4

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

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

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

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

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

我希望看到无效的 utf 十六进制转储,让我自己清理它。

4

1 回答 1

1

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

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

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

于 2011-10-27T22:17:56.867 回答