描述:应用于STREAM_INPUT_BODY或STREAM_OUTPUT_BODY变量时,执行正则表达式进行数据替换。此运算符还支持宏扩展。从ModSecurity 2.7.0开始,此运算符支持语法|hex|允许用户使用\n、\r之类的特殊字符


语法:@rsub s/regex/str/[id]


版本:2.x


libModSecurity支持:TBI


示例:从响应体中删除HTML注释:


SecStreamOutBodyInspection On

SecRule STREAM_OUTPUT_BODY "@rsub s// /" "phase:4,id:172,t:none,nolog,pass"

注意:如果计划通过将@rsub与STREAM_变量一起使用来处理实时数据,则还必须启用SecContentInjection指令。

正则表达式由PCRE库http://www.pcre.org处理。ModSecurity使用以下设置编译其正则表达式:


整个输入被视为单行,即使存在换行符也是如此。

所有匹配都区分大小写。如果您希望执行不区分大小写的匹配,可以使用小写转换函数或强制不区分大小写的匹配,方法是在正则表达式模式前加上(?!)修饰符(一个PCRE功能;可以在PCRE文件中发现许多类似的功能)。如果要在使用宏扩展时转义正则表达式字符串字符,还应使用标志[d]。

PCRE_DOTALL和PCRE_DOLLAR_ENDONLY标志在编译期间设置,这意味着单个点将匹配任何字符,包括换行符,并且$ end锚点将与尾随换行符不匹配。

正则表达式是一个非常强大的工具。强烈建议您阅读PCRE文档以熟悉其功能。


注意:此运算符支持“capture”动作。



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