Правило Modsecurity для блокировки запроса, когда параметр не соответствует регулярному выражению

Я пытаюсь создать правило modsecurity, которое должно блокировать запрос, когда параметр не соответствует определенному регулярному выражению.
Возьмем регулярное выражение электронной почты в качестве примера: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
и для параметра: адрес электронной почты
расположение страницы (должно быть включено в правило): /signup.php
Что я пробовал (но я предполагаю вообще не правильно):

SecRule REQUEST_URI "@contains signup.php" "id:1,t:none,block,chain"
SecRule ARGS:email "!@rx wtvr" "t:none"

Поэтому, если кто-то отправит запрос на получение, например: "/signup.php?email=alert...", он будет заблокирован.


person yoano    schedule 08.03.2016    source источник


Ответы (1)


Я нашел возможное решение:

SecRule REQUEST_URI "@contains signup.php" "id:1,phase:2,log,deny,status:503,msg:'custom email hack detected',chain"
SecRule ARGS:email "!@rx (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)" "t:none"
person yoano    schedule 08.03.2016
comment
Выглядит хорошо для меня. Хотя я бы сказал, что определенные проверки, подобные этой, вероятно, принадлежат вашему приложению, а не WAF, если это вообще возможно. - person Barry Pollard; 08.03.2016