我有一个带有 mod_security 2.8.0-5.25 的 apache 2.2.29-1.4,它是一个带有 mod_proxy_http 的反向代理,用于本地 java 应用程序。
我对某些 url 有误报,并希望仅在给定的 URI 上将某些 OWASP 规则列入白名单。
目前在全球范围内将规则列入白名单
SecRuleRemoveById 960010
完美运行
但两者
<LocationMatch ^/(myapp/mymethod.do.*)$>
SecRuleRemoveById 960010
ProxyPassMatch http://localhost:8080/$1
</LocationMatch>
和
<Location "/myapp/mymethod.do">
SecRuleRemoveById 960010
</Location>
ProxyPass /myapp/mymethod.do http://localhost:8080/myapp/mymethod.do
ProxyPassReverse /myapp/mymethod.do http://localhost:8080/myapp/mymethod.do
不要将规则列入白名单。
我还尝试添加新的 mod_security 规则来修改现有规则,但将 URI 列入白名单总是失败......
有什么见解吗?
960010 是第 1 阶段规则。阶段 1在处理指令之前运行。
<location>
所以你需要用 ModSecurity 编写一个规则来为你而不是 Apache 进行位置过滤。
像这样的东西:
这基本上创建了另一个规则,该规则仅针对此 URL 触发并删除此规则。请注意,这必须在定义规则 960010 之前添加。我给出了 12345 的规则 ID,但将其更改为任何小于 100,000 的空闲 ID(高于此值是为 OWASP 等规则集保留的)。
有关参考手册中所有语法的更多详细信息: https ://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual