У меня есть приложение, обслуживаемое Apache, в котором включен mod_security, и я успешно настраиваю исключения, чтобы избежать ложных срабатываний, используя:
SecRuleUpdateTargetById 981260 !ARGS:'/^PD-.*/'
Но теперь я столкнулся со случаем, когда аргумент запроса содержит пароль, который потенциально может содержать все возможные комбинации символов, которые mod_security будет отмечать как ложное срабатывание. Итак, моим наивным решением было бы отключить все правила для этого конкретного аргумента примерно так:
SecRuleUpdateTargetById * !ARGS:'/^PD-.*/'
Возможно ли такое?
Нет, это невозможно. Хотя можно отключить несколько правил одновременно на основе идентификатора тега, поэтому все правила, помеченные этим тегом, будут отключены, например:
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)