我遇到了一个我从未见过的非常奇怪的问题。目前我有一些通过 Apache HTTP 提供的 Web 应用程序。
某些 HTTP 请求有时会被服务器和客户端之间的某个东西拒绝。不管它们是 GET 还是 POST,那里的东西都会拒绝带有超过 40 个参数的请求。因此,一些大型 POST 请求(带有许多参数的表单,例如注册信息或 Joomla 管理信息)被阻止,并且会面临可怕的 HTTP 404 响应(浏览器显示“找不到指定的 URL”)。
检查 Apache HTTP 中的 access.log 和 error.log,这些请求未到达 HTTP 服务器,并且我使用 Firefox 和 wget 对一定数量的虚拟参数(在 GET 和 POST 中)进行了测试。最多有 40 个参数时,响应为 200,如果有 41 个或更多参数,则会抛出 404 且没有其他标头...
为什么可以通过参数数量过滤 HTP 请求?感谢您的帮助,希望这是一个适合询问此类问题的论坛。
编辑:我怀疑是 WAF 的问题。配置它的人说它只影响服务器的一个接口。我猜它管理了所有接口。WAF 中评估错误/可疑 URL 的规则将参数数量限制为 40,可能是因为正则表达式或其他原因。我们在执行一些 wireshark 后发现了这一点,发现请求没有到达服务器本身。谢谢大家。
答案1
如果日志中没有 404 事件,则表明它在其他地方被阻止了。您是否有应用程序防火墙、IPS、R-Proxy 或类似产品?