регулярное выражение modsecurity не всегда соответствует простому правилу

регулярное выражение modsecurity не всегда соответствует простому правилу

Я пытаюсь создать простое правило регулярного выражения modsecurity, которое останавливает обработку правил при обнаружении совпадения и просто возвращает статус 200 в запросе POST, чтобы он не продолжался и не блокировался другим правилом CRS далее в цепочке.

Вот мое правило:

    SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog"

Что происходит, так это то, что иногда правило выполняется и разрешается, но иногда modsecurity продолжает работу и попадает под встроенные правила CRS modsecurity после этого правила, и я не могу понять, почему? Я новичок в modsecurity и прочитал все онлайн-документы, но пока не нашел ответа. Я также пробовал правила regex, которые (в других местах я использовал regex) использовались немного по-другому с теми же результатами. Иногда они работают, а иногда нет.

"@rx ^/\cgi-bin\/myPHPScript\.php"
"@rx ^.*\/cgi-bin\/myPHPScript\.php.*$"

Я хочу понять, что не так в этой конкретной ситуации, поскольку у меня есть и другие, более сложные скрипты регулярных выражений, которые я хочу разрешить, поэтому понимание проблемы с этим скриптом должно применяться и к остальным.

Заранее спасибо.

[РЕДАКТИРОВАТЬ]

Похоже, что когда:

SecRuleEngine DetectionOnly

необходимо установить:

ctl:ruleEngine=Off

или

ctl:ruleEngine=On

при попытке использовать allowсDetectionOnly

Согласно этой статье:

https://stackoverflow.com/questions/58452059/modsecurity-is-turning-off-the-rule-engine-really-necessary-when-implementing-a

Пример:

SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog,ctl:ruleEngine=On"

Связанный контент