当以下任何变量被设置为1时,MULTIPART_STRICT_ERROR也将被设置为1:

REQBODY_PROCESSOR_ERROR,MULTIPART_BOUNDARY_QUOTED,MULTIPART_BOUNDARY_WHITESPACE,MULTIPART_DATA_BEFORE,MULTIPART_DATA_AFTER,MULTIPART_HEADER_FOLDING,MULTIPART_LF_LINE,MULTIPART_MISSING_SEMICOLON MULTIPART_INVALID_QUOTING MULTIPART_INVALID_HEADER_FOLDING MULTIPART_FILE_LIMIT_EXCEEDED。

这些变量中的每一个都涵盖了multipart/form-data格式的请求体的一个不寻常(尽管有时是合法的)方面。策略中应始终包含一个规则,以检查此变量(更简单)或一个或多个单个变量(如果您确切知道要完成的内容)。根据误报率和默认策略,您应该决定是否阻止或仅在触发规则时发出警告。


使用此变量的最佳方法如下例所示:


SecRule MULTIPART_STRICT_ERROR "!@eq 0" \

"phase:2,id:30,t:none,log,deny,msg:'Multipart request body \

failed strict validation: \

PE %{REQBODY_PROCESSOR_ERROR}, \

BQ %{MULTIPART_BOUNDARY_QUOTED}, \

BW %{MULTIPART_BOUNDARY_WHITESPACE}, \

DB %{MULTIPART_DATA_BEFORE}, \

DA %{MULTIPART_DATA_AFTER}, \

HF %{MULTIPART_HEADER_FOLDING}, \

LF %{MULTIPART_LF_LINE}, \

SM %{MULTIPART_MISSING_SEMICOLON}, \

IQ %{MULTIPART_INVALID_QUOTING}, \

IQ %{MULTIPART_INVALID_HEADER_FOLDING}, \

FE %{MULTIPART_FILE_LIMIT_EXCEEDED}'"

在ModSecurity v2.1.3中升级了multipart/form-data解析器以主动查找是否有尝试绕过规则的迹象。添加了许多变量(如上所列)以暴露在解析过程中发现的各种情况。MULTIPART_STRICT_ERROR变量可以方便地立即检查所有异常情况。各个变量允许根据具体情况对检测进行微调来减少误报。



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