ARGS是一个集合,可以通过静态参数(匹配带有该名称的参数),或是通过正则表达式(匹配所有带有与正则表达式匹配的名称的参数)进行单独使用(包含所有参数,包括POST Payload)。如果只需要进行字符串或正文参数的查询,请参阅ARGS_GET和ARGS_POST集合。



一些变量实际上是集合,它们在运行时扩展为更多的变量。以下示例将检查所有请求参数的值:


SecRule ARGS dirty "id:7"


但是,有时您只想查看集合的某些部分。这可以通过选择运算符(:)来实现。以下示例仅查看名为p的参数的值(请注意,通常,请求可以包含多个具有相同名称的参数):


SecRule ARGS:p dirty "id:8"


也可以指定排除。下面将检查单词dirty的所有请求参数的值,除了名为z的那些(同样,可以有零个或多个名为z的参数):


SecRule ARGS|!ARGS:z dirty "id:9"


通过一个特殊的运算符,即&,允许您计算集合中有多少变量。以下规则表示,如果请求中的参数个数大于零,则会触发规则(暂时忽略第二个参数):


SecRule &ARGS !^0$ "id:10"


有时您需要查看一组参数,每个参数的名称略有不同。在这种情况下,您可以在选择运算符本身中指定正则表达式。以下规则将查看名称以id_开头的所有参数的值:


SecRule ARGS:/^id_/ dirty "id:11"


注意:如果参数p不存在,则使用ARGS:p不会导致对运算符的任何调用。

在ModSecurity 1.X中,ARGS变量代表QUERY_STRING + POST_PAYLOAD,而现在它扩展为单个变量。



Created with the Personal Edition of HelpNDoc: Easy EPub and documentation editor