nginx-naxsi白名單規則是什么

白名單規則語法:

basicrule wl:id [negative] [mz:[$url:target_url]|[match_zone]|[$args_var:varname]|[$body_vars:varname]|[$headers_var:varname]|[name]]

wl:id (white list id) 哪些攔截規則會進入白名單
wl:0 把所有攔截規則加入白名單
wl:42 把id為42的攔截規則加入白名單
wl:42,41,43 把id為42, 41和43的攔截規則加入白名單
wl:-42 把所有攔截規則加入白名單,除了id為42的攔截規則

mz:(match zones)

args get的整個參數,如: foo=bar&in=%20
$args_var get參數的參數名, 如:foo=bar&in=%20中的foo和in
$args_var_x 正則匹配的get參數的參數名
headers 整個http協議頭
$headers_var http協議頭的名字
$headers_var_x 正則匹配的http協議頭的名字
body post的整個參數內容
$body_var post參數的參數名
$body_var_x 正則匹配的post參數的參數名
url url(?前的)
url_x 正則匹配的url(?前的)
file_ext 文件名 (post上傳文件時上傳的文件名)

白名單配置示例

以規則#1000為例:規則#1000是過濾包含select、update、delete、insert等sql關鍵字的規則

規則 說明
basicrule wl:1000; 在本子規則中完全禁用攔截規則#1000。因為沒有指定區域,所以全部加入白名單。
basicrule wl:1000 “mz:$args_var:foo”;

在全部get參數名為foo的值中禁用攔截規則#1000

類似http://mike.hi-linux.com/?foo=select * from demo這樣的請示就不會被過濾。

basicrule wl:1000 “mz:$url:/bar|args”;

在url為/bar的get請求中的參數禁用攔截規則#1000

以下類似請求,均不會過濾:

http://mike.hi-linux.com/bar?my=select * from demohttp://mike.hi-linux.com/bar?from=weibo

basicrule wl:1000 “mz:args|name”;

在全部get請求中對所有參數名(只是名,不包含參數值)中禁用攔截規則#1000

以下請求不會過濾:

http://mike.hi-linux.com/bar?from=weibo

以下請求會過濾:

http://mike.hi-linux.com/bar?foo=select

因為select屬于參數值,不在白名單范圍內。

basicrule wl:0 “mz:$url_x:^/upload/(.*).(.*)$|url”;

在全部請求中對符合^/upload/(.*).(.*)$正則規則的url禁用全部攔截規則

類似http://mike.hi-linux.com/upload/select.db請求不會被過濾(原本會觸發#1000攔截規則)。

實戰用的白名單規則 #?vi?naxsi_basicrule.conf basicrule?wl:1010,1011?"mz:$args_var:rd"; basicrule?wl:1015,1315?"mz:$headers_var:cookie";

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享