本节介绍了如何为参数配置使用正则表达式匹配的 WAF 例外。NSX Advanced Load Balancer 支持使用正则表达式进行 URL 匹配。
NSX Advanced Load Balancer WAF 使用 PCRE(Perl 兼容正则表达式)作为正则表达式。NSX Advanced Load Balancer 支持为参数配置正则表达式。WAF 策略中的 match_element 字段可以配置为使用正则表达式,而不只是一个关键字。
通过 CLI 为参数配置正则表达式匹配
登录控制器 Shell,然后输入相应命令以编辑所需的 WAF 策略。
通过键入斜杠(“/”),然后键入关键字
match_element_criteria
,来搜索match_element_criteria
。在
match_element
字段中配置所需的正则表达式,如下所示。在match_element
下,将match_case
字段设置为SENSITIVE
,并将match_op
字段设置为REGEX_MATCH
。exclude_list: - match_element: ARGS:regex match_element_criteria: match_case: SENSITIVE match_op: REGEX_MATCH uri_match_criteria: match_case: SENSITIVE match_op: REGEX_MATCH uri_path: ^/test.php
按
Esc
,然后输入:wq
。键入
save
以保存配置。save
配置示例
参数名称可以具有多个固定和动态部分。请考虑如下 URL 示例:
https://appname.com/typo/test_doc.php?data[news][1234][body]=Some_long_text_expected
其中,data[news][" and "][body]
是固定部分,数字 [1234]
是一个动态值,它会随每个请求而变化。针对此应用程序的一个示例攻击如下所示:
https://appname.com/typo/test_doc.php?data[news][1234][body]=%3Cscript%3Ealert(1)%3C/script%3E
为此示例创建例外所需的正则表达式为:
URL Regex: ^/typo/test_doc.php Match element Regex: ARGS:.data\[news\]\[.*\]\[body\]
使用 ARGS:.data
(而非 ARGS:data
)让其成为有效的正则表达式。
WAF 策略配置如下所示:
exclude_list: - match_element: ARGS:data\[news\]\[.*\]\[body\] match_element_criteria: match_case: SENSITIVE match_op: REGEX_MATCH uri_match_criteria: match_case: SENSITIVE match_op: REGEX_MATCH uri_path: ^/typo/test_doc.php
通过 UI 为参数配置正则表达式匹配
在 NSX Advanced Load Balancer UI 中,导航到 。单击要编辑的策略,或者根据需要创建新策略。
在规则选项卡下,导航到规则集下面的相关规则。单击规则对应的下拉菜单以展开配置选项。单击 + 添加例外以配置例外。
在例外字段下面输入正则表达式,然后选中正则表达式匹配复选框。
保存配置。