描述:创建,删除或更新变量。变量名称不区分大小写。


所属动作组:非阻断性动作


示例:要创建变量并将其值设置为1(通常用于设置标志),请使用:setvar:TX.score


要创建变量并同时对其进行初始化,请使用:setvar:TX.score=10


要删除变量,请在名称前加上感叹号:setvar:!TX.score


要增加或减少变量值,请在数值前面使用+和 - 字符:setvar:TX.score=+5


OWASP CRS的示例:


SecRule REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "\bsys\.user_catalog\b" \

               "phase:2,rev:'2.1.3',capture,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,t:replaceComments,t:compressWhiteSpace,ctl:auditLogParts=+E, \

block,msg:'Blind SQL Injection Attack',id:'959517',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1', \

tag:'PCI/6.5.2',logdata:'%{TX.0}',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score}, \

setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"


注意:在链中使用时,当单个规则匹配而不是整个链时,将执行此操作。这意味着

SecRule REQUEST_FILENAME "@contains /test.php" "chain,id:7,phase:1,t:none,nolog,setvar:tx.auth_attempt=+1"

   SecRule ARGS_POST:action "@streq login" "t:none"

每次访问test.php时都会递增(无论提交的参数如何)。如果期望的目标是仅在整个规则匹配时设置变量,则它应该包含在链的最后一个规则中。例如:

SecRule REQUEST_FILENAME "@streq test.php" "chain,id:7,phase:1,t:none,nolog"

   SecRule ARGS_POST:action "@streq login" "t:none,setvar:tx.auth_attempt=+1"



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