Использование регулярных выражений при обновлении аргумента в Mod Security Core Ruleset OWASP
Я только что столкнулся с проблемой с правилом 981173
[msg "Restricted SQL Character Anomaly Detection Alert - Total]
для отправки некоторых идентификаторов YouTube в базу данных. Некоторые идентификаторы имеют специальные символы, такие как -
что, я думаю, является причиной предупреждения
Я пытался исключить $_POST
ключ video[391][]
из правила, где 391
это идентификатор продукта и поэтому это не ключ исправления. Может быть video[500][]
или что-то похожее.
я пытался
SecRuleUpdateTargetById 981173 !ARGS:video[*][]
но это не работает. Любая идея о том, как исключить эту динамику $_POST
ключ от правила?
Message: Access denied with code 403 (phase 2).
Pattern match "([\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\{\\}\\[\\]\\|\\:\\;\"\\'\\\xc2\xb4\\\xe2\x80\x99\\\xe2\x80\x98\\`\\<\\>].*?){4,}"
at ARGS_NAMES:video[391][]. [file "/etc/httpd/crs-tecmint/owasp-modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf"]
[line "159"] [id "981173"] [rev "2"]
[msg "Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded"]
[data "Matched Data: ] found within ARGS_NAMES:video[391][]: video[391][]"] [ver "OWASP_CRS/2.2.9"] [maturity "9"]
[accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"]
1 ответ
Решение
Я думаю, что это должно быть:
SecRuleUpdateTargetById 981173 "!ARGS_NAMES:/^video\[.*\]\[\]/"
или если только числовые идентификаторы, то это:
SecRuleUpdateTargetById 981173 "!ARGS_NAMES:/^video\[[0-9]*\]\[\]/"
Смотрите пример регулярного выражения здесь: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual