# Nginx WAF Maps Definitions
# Automatically generated from OWASP rules.
http {
map $request_uri $waf_block_initialization {
default 0;
"~*\^\.\*\$" 1;
"~*@eq\ 1" 1;
"~*@eq\ 0" 1;
"~*!@rx\ \(\?:URLENCODED\|MULTIPART\|XML\|JSON\)" 1;
"~*\^\[a\-f\]\*\(\[0\-9\]\)\[a\-f\]\*\(\[0\-9\]\)" 1;
"~*@eq\ 100" 1;
}
map $request_uri $waf_block_fixation {
default 0;
"~*\(\?i:\.cookieb\.\*\?;W\*\?\(\?:expires\|domain\)W\*\?=\|bhttp\-equivW\+set\-cookieb\)" 1;
"~*@eq\ 0" 1;
"~*!@endsWith\ %\{request_headers\.host\}" 1;
"~*\^\(\?:ht\|f\)tps\?://\(\.\*\?\)/" 1;
"~*\^\(\?:jsessionid\|aspsessionid\|asp\.net_sessionid\|phpsession\|phpsessid\|weblogicsession\|session_id\|session\-id\|cfid\|cftoken\|cfsid\|jservsession\|jwsession\)\$" 1;
}
map $request_uri $waf_block_attack {
default 0;
"~*TX:paramcounter_\(\.\*\)" 1;
"~*\[nr\]" 1;
"~*@gt\ 1" 1;
"~*\[nr\]\+\(\?:s\|location\|refresh\|\(\?:set\-\)\?cookie\|\(\?:x\-\)\?\(\?:forwarded\-\(\?:for\|host\|server\)\|host\|via\|remote\-ip\|remote\-addr\|originating\-IP\)\)s\*:" 1;
"~*\[rn\]W\*\?\(\?:content\-\(\?:type\|length\)\|set\-cookie\|location\):s\*w" 1;
"~*@gt\ 0" 1;
"~*\." 1;
"~*\^content\-types\*:s\*\(\.\*\)\$" 1;
"~*unix:\[\^\|\]\*\|" 1;
"~*\(\?:get\|post\|head\|options\|connect\|put\|delete\|trace\|track\|patch\|propfind\|propatch\|mkcol\|copy\|move\|lock\|unlock\)s\+\[\^s\]\+s\+http/d" 1;
"~*\^\[\^sv,;\]\+\[sv,;\]\.\*\?b\(\?:\(\(\?:tex\|multipar\)t\|application\)\|\(\(\?:audi\|vide\)o\|image\|cs\[sv\]\|\(\?:vn\|relate\)d\|p\(\?:df\|lain\)\|json\|\(\?:soa\|cs\)p\|x\(\?:ml\|\-www\-form\-urlencoded\)\|form\-data\|x\-amf\|\(\?:octe\|repor\)t\|stream\)\|\(\[\+/\]\)\)b" 1;
"~*content\-transfer\-encoding:\(\.\*\)" 1;
"~*\^\[\^sv,;\]\+\[sv,;\]\.\*\?\(\?:application/\(\?:\.\+\+\)\?json\|\(\?:application/\(\?:soap\+\)\?\|text/\)xml\)" 1;
"~*\(\?:bhttp/d\|<\(\?:html\|meta\)b\)" 1;
}
map $request_uri $waf_block_rfi {
default 0;
"~*\^\(\?i:file\|ftps\?\|https\?\)://\(\?:d\{1,3\}\.d\{1,3\}\.d\{1,3\}\.d\{1,3\}\)" 1;
"~*!@endsWith\ \.%\{request_headers\.host\}" 1;
}
map $request_uri $waf_block_exceptions {
default 0;
"~*\^\(\?:GET\ /\|OPTIONS\ \*\)\ HTTP/\[12\]\.\[01\]\$" 1;
"~*@streq\ GET\ /" 1;
"~*@ipMatch\ 127\.0\.0\.1,::1" 1;
"~*@endsWith\ \(internal\ dummy\ connection\)" 1;
}
map $request_uri $waf_block_lfi {
default 0;
"~*\(\?:\(\?:\^\|\[x5c/;\]\)\.\{2,3\}\[x5c/;\]\|\[x5c/;\]\.\{2,3\}\(\?:\[x5c/;\]\|\$\)\)" 1;
}
map $request_uri $waf_block_enforcement {
default 0;
"~*@endsWith\ \.pdf" 1;
"~*b\(\?:keep\-alive\|close\),s\?\(\?:keep\-alive\|close\)b" 1;
"~*\.\[\^\.\~\]\+\~\(\?:/\.\*\|\)\$" 1;
"~*!@streq\ JSON" 1;
"~*@validateByteRange\ 9,10,13,32\-126,128\-255" 1;
"~*!@rx\ \^OPTIONS\$" 1;
"~*!@pm\ AppleWebKit\ Android\ Business\ Enterprise\ Entreprise" 1;
"~*\^\[\^;s\]\+" 1;
"~*@validateByteRange\ 38,44\-46,48\-58,61,65\-90,95,97\-122" 1;
"~*\^\(\?:GET\|HEAD\)\$" 1;
"~*@validateUrlEncoding" 1;
"~*@within\ %\{tx\.restricted_extensions\}" 1;
"~*@contains\ \#" 1;
"~*!@rx\ \^0\?\$" 1;
"~*\(d\+\)\-\(d\+\)" 1;
"~*\.\(\[\^\.\]\+\)\$" 1;
"~*\^bytes=\(\?:\(\?:d\+\)\?\-\(\?:d\+\)\?s\*,\?s\*\)\{6\}" 1;
"~*!@pm\ AppleWebKit\ Android" 1;
"~*!@rx\ \^d\+\$" 1;
"~*@gt\ %\{tx\.max_file_size\}" 1;
"~*@eq\ 1" 1;
"~*!@rx\ \^0\$" 1;
"~*@streq\ POST" 1;
"~*@validateByteRange\ 32,34,38,42\-59,61,65\-90,95,97\-122" 1;
"~*@gt\ %\{tx\.arg_name_length\}" 1;
"~*@gt\ 0" 1;
"~*@within\ %\{tx\.restricted_headers_basic\}" 1;
"~*\(\?:\^\|\[\^x5c\]\)x5c\[cdeghijklmpqwxyz123456789\]" 1;
"~*@validateByteRange\ 32\-36,38\-126" 1;
"~*%u\[fF\]\{2\}\[0\-9a\-fA\-F\]\{2\}" 1;
"~*\['\";=\]" 1;
"~*\^\$" 1;
"~*@validateUtf8Encoding" 1;
"~*!@rx\ \^\(\?:OPTIONS\|CONNECT\)\$" 1;
"~*!@rx\ \^\(\?:\(\?:max\-age=\[0\-9\]\+\|min\-fresh=\[0\-9\]\+\|no\-cache\|no\-store\|no\-transform\|only\-if\-cached\|max\-stale\(\?:=\[0\-9\]\+\)\?\)\(\?:s\*,s\*\|\$\)\)\{1,7\}\$" 1;
"~*@validateByteRange\ 1\-255" 1;
"~*\^\.\*\$" 1;
"~*@gt\ %\{tx\.arg_length\}" 1;
"~*\(\?:\^\(\[d\.\]\+\|\[\[da\-f:\]\+\]\|\[da\-f:\]\+\)\(:\[d\]\+\)\?\$\)" 1;
"~*@within\ %\{tx\.restricted_headers_extended\}" 1;
"~*\^bytes=\(\?:\(\?:d\+\)\?\-\(\?:d\+\)\?s\*,\?s\*\)\{63\}" 1;
"~*\(\?i\)x5cu\[0\-9a\-f\]\{4\}" 1;
"~*@ge\ 1" 1;
"~*!@endsWith\ \.pdf" 1;
"~*@gt\ 50" 1;
"~*!@rx\ \^\[w/\.\+\*\-\]\+\(\?:s\?;s\?\(\?:action\|boundary\|charset\|component\|start\(\?:\-info\)\?\|type\|version\)s\?=s\?\['\"w\.\(\)\+,/:=\?<>@\#\*\-\]\+\)\*\$" 1;
"~*@gt\ 1" 1;
"~*@eq\ 0" 1;
"~*charset\.\*\?charset" 1;
"~*x25" 1;
"~*@gt\ %\{tx\.total_arg_length\}" 1;
"~*charsets\*=s\*\[\"'\]\?\(\[\^;\"'s\]\+\)" 1;
"~*%\[0\-9a\-fA\-F\]\{2\}" 1;
"~*@gt\ %\{tx\.max_num_args\}" 1;
"~*@gt\ %\{tx\.combined_file_sizes\}" 1;
}
map $request_uri $waf_block_generic {
default 0;
"~*\[s\*constructors\*\]" 1;
"~*@\{\.\*\}" 1;
"~*while\[sv\]\*\(\[sv\(\]\*\(\?:!\+\(\?:false\|null\|undefined\|NaN\|\[\+\-\]\?0\|\"\{2\}\|'\{2\}\|`\{2\}\)\|\(\?:!!\)\*\(\?:\(\?:t\(\?:rue\|his\)\|\[\+\-\]\?\(\?:Infinity\|\[1\-9\]\[0\-9\]\*\)\|new\ \[A\-Za\-z\]\[0\-9A\-Z_a\-z\]\*\|window\|String\|\(\?:Boolea\|Functio\)n\|Object\|Array\)b\|\{\.\*\}\|\[\.\*\]\|\"\[\^\"\]\+\"\|'\[\^'\]\+'\|`\[\^`\]\+`\)\)\.\*\)" 1;
}
map $request_uri $waf_block_xss {
default 0;
"~*<\[\?\]\?import\[s/\+S\]\*\?implementation\[s/\+\]\*\?=" 1;
"~*\(\?i\)\]" 1;
"~*!@validateByteRange\ 20,\ 45\-47,\ 48\-57,\ 65\-90,\ 95,\ 97\-122" 1;
"~*\(\?i\)