为什么 mod_security 需要 ACCEPT HTTP 标头字段?

rip*_*234 7 http mod-security apache-2.2

经过一些调试,我发现 mod_security 的核心规则集会阻止没有(可选!)ACCEPT 标头字段的请求。

这是我在日志中找到的内容:

ModSecurity:警告。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“关键”] [标签“ PROTOCOL_VIOLATION/MISSING_HEADER"] [主机名 "example.com"] [uri "/"] [unique_id "T4F5@H8AAQEAAFU6aPEAAAAL"]
ModSecurity:访问被拒绝,代码为 400(第 2 阶段)。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/optional_rules/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“

为什么需要这个标题?我知道“大多数”客户发送这些,但为什么他们的缺席被视为安全威胁?

Lad*_*ada 4

我没有编写这些规则,但据我了解,不包含此标头的客户端与恶意客户端之间以及包含该标头的客户端与良性客户端之间存在很强的相关性。

您可能会发现某些机器人(例如:Pingdom、HostTracker、UpDowner、magpie-crawler、Yandex、Yodao、MJ12、GigaBot 和通过我的日志进行快速 grep 的 LinkedInBot)不会发送此标头,但是如果您将其与匹配“正常”用户代理(例如 Chrome、Firefox、IE、Safari、Opera 等)的规则,那么您将能够避免阻止这些机器人。

有一些客户端(或者可能是修改标头的代理)发送标accept:头(以及大多数其他小写标头)。我还无法确定这些是否是恶意的,但它们都声称是“Firefox/3.6.8”并且具有:

Via:HTTP/1.1 silk
X-Forwarded-For:10.161.106.98
Run Code Online (Sandbox Code Playgroud)

或标头中的其他一些 10.xxx IP 地址...这是可疑的。