Mod_security url/arg 规则例外

Mod_security rule exception for url/arg

我们网站上的一个图像标记了一个 modsec 规则,我正在尝试为该事件添加一个规则例外。标记字符串开头的数字是会话编号,因此我在规则中添加了一个正则表达式。

我已经尝试了各种排列组合,但没有任何乐趣,希望得到一些建议。

已阻止的 URI: https://www.website.com/application/login?0--preLoginHeaderPanel-companyLogo

Modsec 日志片段: [文件“/usr/share/modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf”] [行“65”] [id“942100”] [消息“SQL 通过 libinjection 检测到注入攻击”] [数据“匹配数据:在 ARGS_NAME:0--preLoginHeaderPanel-companyLogo: 0--preLoginHeaderPanel-companyLogo 中找到 1c”]

尝试的异常(在 apache.conf 内): SecRuleUpdateTargetById 942100 !ARGS_NAMES:'[0-9][0-9]?--preLoginHeaderPanel-companyLogo'

核心规则集 Dev on Duty 在这里。规则 942100 是我们的 'LibInjection' 规则之一。 LibInjection 非常不透明(它是第三方 library/operator),因此您认为规则排除是解决此问题的方法是正确的。

在此上下文中正则表达式的使用遵循特定的形式。它们需要夹在正斜杠内,如下所示:

SecRuleUpdateTargetById 942100 "!ARGS_NAMES:/^[0-9][0-9]?--preLoginHeaderPanel-companyLogo/"

我在正则表达式的开头添加了一个起始锚点。您可能想考虑最后锚定是否也是一个好主意。

有关更多示例和信息,我们在此处提供了一些很棒的文档:https://coreruleset.org/docs/configuring/false_positives_tuning/#support-for-regular-expressions