您在设置白名单规则或自定义规则时,需要在规则中配置匹配条件,定义要匹配的请求特征。本文介绍了规则匹配条件支持使用的字段及其释义。

什么是匹配条件

匹配条件指需要边缘WAF检测的请求特征。您在设置自定义防护策略白名单防护策略时,通过定义匹配条件,指定要检测的请求特征。如果某个请求满足规则中设置的匹配条件,则该请求命中对应规则;WAF会依据规则中设置的规则动作,对请求执行相应处置(例如,拦截、JS验证、观察等)。

支持的匹配字段

下表描述了匹配条件中支持使用的匹配字段。

匹配字段适用的逻辑符字段描述
URI
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
请求的统一资源标识符URI(Uniform Resource Identifier),表示被请求的资源的路径。对应匹配内容以/开头,不包含域名,例如:/login.php
IP属于、不属于请求的来源IP,即发起请求的客户端的IP地址。
匹配内容填写要求如下:
  • 支持使用IPv4地址(例如:10.10.10.10),支持使用IP网段格式(例如:10.10.10.10/16)。
  • 最多可以填写50个值,多个值之间使用英文逗号(,)分隔。
Referer
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在、不存在
  • 内容为空
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
访问请求的来源网址,即该访问请求是从哪个页面跳转产生的。
User-Agent
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在、不存在
  • 内容为空
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
发起访问请求的客户端的浏览器标识、渲染引擎标识和版本信息等浏览器相关信息。
Query String
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在、不存在
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
请求中的查询字符串,具体指URL中问号(?)后面的部分。
Cookie
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在、不存在
  • 长度等于、长度大于、长度小于
访问请求中的Cookie信息。
Content-Type
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 长度等于、长度大于、长度小于
请求指定的响应HTTP内容类型,即多用途互联网邮件扩展类型MIME(Multipurpose Internet Mail Extensions)类型信息。
Content-Length值小于、等于、值大于访问请求的响应内容所包含的字节数。取值范围:0~8192。
X-Forwarded-For
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 不存在
  • 长度等于、长度大于、长度小于
访问请求的客户端真实IP。X-Forwarded-For(XFF)用来识别通过HTTP代理或负载均衡方式转发的访问请求的客户端最原始的IP地址的HTTP请求头字段,只有通过HTTP代理或者负载均衡服务器转发的访问请求才会包含该项。
Body
  • 等于、不等于
  • 包含、不包含
  • 不存在
  • 前缀匹配
  • 后缀匹配
访问请求的请求内容信息。
Http-Method
  • 等于、不等于
  • 等于多值之一、不等于任一值
请求的方法,包括GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE、PATCH。
Header
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在、不存在
  • 长度等于、长度大于、长度小于
访问请求的头部信息。支持自定义的头部字段。
URI Path
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
访问请求的URI路径。
Query String Parameter
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
访问请求的URL地址中的参数部分,通常指URL中”?”后面的部分。例如,www.abc.com/index.html?action=login中的action=login就是参数部分。
Host
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
被请求的域名。
Cookie Name
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
Cookie的键名称。例如,在acw_tc:111这个Cookie中,awc_tc是Cookie的键名称。
Body Parameter
  • 等于、不等于
  • 等于多值之一、不等于任一值
  • 包含、不包含
  • 包含多值之一、不包含任一值
  • 存在
  • 长度等于、长度大于、长度小于
  • 前缀匹配、后缀匹配
请求Body中的参数名称。例如,请求Body中包含以下JSON字符串a=1&b=2,那么ab就是参数名称。

逻辑符释义

逻辑符说明
属于、不属于匹配字段属于、不属于匹配内容。
包含、不包含匹配字段包含、不包含匹配内容。
包含多值之一、不包含任一值匹配字段包含匹配内容其中之一、匹配字段不包含任意一个匹配内容。
等于、不等于匹配字段等于、不等于匹配内容。
等于多值之一、不等于任一值匹配字段等于匹配内容其中之一、匹配字段不等于任意一个匹配内容。
长度等于、长度大于、长度小于匹配字段的长度等于、大于、小于匹配内容。
存在、不存在匹配字段存在、匹配字段不存在。
值小于、值等于、值大于匹配字段的值小于、等于、大于匹配内容。
前缀匹配、后缀匹配匹配字段的前缀、后缀包含匹配内容。
内容为空匹配字段内容为空。

配置示例

  • 示例1:匹配字段为URI、逻辑符为包含、匹配内容/login.php,表示当被请求的路径包含/login.php时,则请求命中该规则。
  • 示例2:匹配字段为IP、逻辑符为属于、匹配内容为192.168.0.1,表示当发起连接的客户端IP为192.168.0.1时,则请求命中该规则。