用于在参数不符合正则表达式时阻止请求的Modsecurity规则

时间:2016-03-08 14:37:13

标签: regex rules mod-security mod-security2

我正在尝试创建modsecurity规则,当参数不符合某个正则表达式时需要阻止请求。
我们以email regex为例:(^[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"

因此,如果有人发布了一个get请求,例如“/signup.php?email=alert ...”,则会被阻止。

1 个答案:

答案 0 :(得分:0)

我找到了一个可能的解决方案:

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"