我有一个由 Apache 提供服务的应用程序,该应用程序启用了 mod_security,并且我已经成功调整异常以避免使用如下方法出现误报:
SecRuleUpdateTargetById 981260 !ARGS:'/^PD-.*/'
但现在我面临的情况是请求参数带有密码,该密码可能包含 mod_security 会标记为误报的所有可能的字符组合。因此,我的简单解决方案是禁用该特定参数的所有规则,如下所示:
SecRuleUpdateTargetById * !ARGS:'/^PD-.*/'
这种事可能吗?
答案1
不,这是不可能的。不过,可以根据标签 ID 一次禁用多个规则,这样所有带有该标签的规则都会被禁用,例如:
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION" !ARGS:'/^PD-.*/'
如果一个参数可能违反几种不同的规则标签(例如 SQL 注入和 XSS),那么您将必须设置几种SecRuleUpdateTargetByTag
例外情况。
这也取决于规则集中是否一致指定标签。它们大多位于 OWASP CRS 中,但不确定其他 ModSecurity 规则集中是否如此。
请参阅此处了解更多详细信息:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecRuleUpdateTargetByTag
您也可以类似地使用 SecRuleUpdateTargetByMsg 来代替(https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecRuleUpdateTargetByMsg)