因此,此建议的缓解措施之一是:
1)使用 SetEnvIf 或 mod_rewrite 检测大量范围,然后忽略 Range: 标头或拒绝请求。
选项 1:(Apache 2.0 和 2.2)
# Drop the Range header when more than 5 ranges.
# CVE-2011-3192
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
# optional logging.
CustomLog logs/range-CVE-2011-3192.log common env=bad-range
现在,当我将其添加到我的 httpd.conf 时:
<IfModule mod_setenvif.c>
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
</IfModule>
重新启动 Apache 时出现此错误:
“无效命令‘RequestHeader’,可能是拼写错误或由服务器配置中未包含的模块定义”
SetEvnIf 模块似乎已加载。
那个参数有什么问题?
版本是 Apache/2.2.14 。
该通报的链接为:http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/browser
此外,Tomcat 会受到此影响吗?
蒂娅!
答案1
RequestHeader
需要您加载mod_headers
答案2
根据 DerfK 的回答,您需要加载 mod_headers - a la
LoadModule headers_module modules/mod_headers.so
在调用 RequestHeader 之前,在您的配置文件中