我的网站完全转换为使用utf-8(mysql、http头文件、php mb_字符串等)。
我正在做一些渗透测试,并试图将无效的utf发布到其中一个脚本(使用burpsuite)。
但是,当我发布无效的utf(一个十六进制转储$u post变量)时,我看到在尝试使用mb_detect_编码验证之前,已经对无效的utf序列进行了清理。
这对我来说听起来是个好消息,但我想知道哪一层正在转换post数据?
这是内容类型http头的副作用吗,可能是我的web服务器在做(lighttpd)。或者在填充$_post时,是php本身在做这件事吗?
我本以为会看到无效的utf hexdump,让我自己去消毒。
最佳答案
php本身并不过滤post数据,它只是将其作为总是“有效”的二进制数据处理(它只是数据,不需要验证)。
因此,我怀疑您的web服务器中有一些模块正在更改数据,或者有一些php扩展正在过滤数据。
检查您的web服务器是否安装了web防火墙,以及用php加载的扩展列表,以及是否有与输入过滤相关的内容。