在ModSecurity的规则惊叹号的意义

问题描述 投票:1回答:1

谁能帮我解释感叹号确实在这样的ModSecurity的规则是什么:

SecRuleUpdateTargetById 932100 "!ARGS:foo"

有人如何阅读和解释"!ARGS:foo" VS "ARGS:foo"阅读和起草这一规则是什么时候?

当测试差别,用感叹号的规则给我,我想,当这样的说法是不存在应用该规则标识的结果。

我在这里引用https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)#args_names的文件,并试图搜集我从其他的例子可以,但也许有不同的用语进行分解。

非常感谢您的帮助!

------编辑------ 谢谢你的解释为止。

为什么写在排除前不具有“感叹号”的“等价”的规则?

SecRule REQUEST_URI "@streq /my/endpoint" \
    "id:0003, \
    phase:2, \
    pass, \
    nolog, \
    ctl:ruleRemoveTargetById=931130;ARGS:foo"
mod-security
1个回答
1
投票

它的意思是“不”,并在这个例子中是用来排除某些参数。

所以下面:

SecRuleUpdateTargetById 932100 "!ARGS:foo"

更改规则932100看看除了参数foo规则中指定的所有目标。

这通常是因为参数foo常常导致此规则,以便正确。因此,您的选择是完全关闭该规则关闭,或者从该规则被检查排除这种说法。后者通常是更好的选择,因为它意味着规则仍然地方的其他参数,因此仍证明其大部分的保护。

怎么来的“等效”原则写在BEFORE排除[(CTL:ruleRemoveTargetById)不具有“感叹号”?

那是因为他们没有严格的“等价”。 SecRuleUpdateTargetById通过向规则更新目标,而ctl:ruleRemoveTargetById从目标中删除位。如果有一个SecRuleRemoveTargetById那么他们会更等同,但是没有。事实上,即使ModSecurity Reference manual解决了这一问题:

  1. ruleRemoveTargetById - 因为这个动作是用来只是删除目标,用户不需要使用字符!之前的目标列表。

他们为什么决定实施ctl:ruleRemoveTargetById而不是ctl:ruleUpdateTargetById,我不能说。

© www.soinside.com 2019 - 2024. All rights reserved.