我試圖爲未知名稱的參數設置ModSecurity白名單,但匹配值。例如,我想列出任何時間戳參數(例如timestamp=2016-01-01 00:00:00
)。目前,此觸發規則爲981173 (Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded)
ModSecurity:值白名單參數
以下內容將生效,但如果至少有一個匹配項將跳過對所有參數的檢查,因此它不會捕獲https://www.example.com/?timestamp=2016-01-01+00:00:00&badvalue=2016-01-01+00:00:00:00
中的badvalue
參數。
SecRule ARGS "@rx ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$" \
"id:'99001', phase:1, nolog, pass, t:none, \
ctl:ruleRemoveTargetByTag=OWASP_CRS/WEB_ATTACK/SQL_INJECTION;ARGS"
如果我硬編碼參數名稱,下面的工作。
SecRule ARGS:timestamp "@rx ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$" \
"id:'99001', phase:1, nolog, pass, t:none, \
ctl:ruleRemoveTargetByTag=OWASP_CRS/WEB_ATTACK/SQL_INJECTION;ARGS:timestamp"
我試過以下,但他們沒有工作。
SecRule ARGS "@rx ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$" \
"id:'99001', phase:1, nolog, pass, t:none, \
ctl:ruleRemoveTargetByTag=OWASP_CRS/WEB_ATTACK/SQL_INJECTION;/%{MATCHED_VAR_NAME}/"
SecRule ARGS "@rx ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$" \
"id:'99001', phase:1, nolog, pass, t:none, \
ctl:ruleRemoveTargetByTag=OWASP_CRS/WEB_ATTACK/SQL_INJECTION;MATCHED_VAR_NAME"
ModSecurity可以嗎?有沒有辦法使用MATCHED_VAR_NAME
這個用例?我寧願不必爲每個可能包含時間戳記的參數名稱添加一條規則。
謝謝。我結束了每一個論點的補充。 –