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

Modsecurity rule for blocking a request when a parameter doesn't meet a regex

我正在尝试创建 modsecurity 规则,该规则需要在参数不符合特定正则表达式时阻止请求。
让我们以 email regex 为例: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
对于参数:email
页面位置(需要包含在规则中):/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...”,它将被阻止。

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

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"