我正在阅读 docs,但我只是不明白匹配变量
RequestArgNames
和 RequestArgValues
之间有什么区别。
仅通过查看表格,这两个匹配变量似乎执行相同的操作(第 3 和第 5 行):
我想做的(似乎不可能)是排除某些查询参数的值(如果这些值本身包含某个字符串)。
例如:
匹配变量:
?
import
http://localhost:8080/?text=something-important&import=true&todo=gimport
something-important
和 gimport
通过参考 MSDoc,明确提到
RequestArgNames
和 RequestArgValues
在 WAF 匹配排除下的请求属性中以相同的方式工作,如下所示。
按名称请求属性的工作方式与按值请求属性相同,包含在内是为了向后兼容 CRS 3.1 及更早版本。我们建议您使用按值的请求属性,而不是按名称的属性。
例如,如果请求Uri是
Uri: http://localhost:8080/?text=/etc/passwd
,使用匹配变量 RequestArgNames
或 RequestArgValues
排除 /etc/passwd
,如上面 MS 文档中给出的。
您可以在Azure Portal下的WAF中进行相应管理,如下所示。
在您的示例中,您选择的示例选择器是
import
。它会排除 Uri 中包含 import
选择器的值。