匹配条件说明

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

什么是匹配条件

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

支持的匹配字段

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

匹配字段

适用的逻辑符

字段描述

URI

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

请求的统一资源标识符URI(Uniform Resource Identifier),表示被请求的资源的路径。对应匹配内容以/开头,不包含域名,例如:/login.php

IP

  • 属于、不属于

  • 在列表中、不在列表中

请求的来源IP,即发起请求的客户端的IP地址。

匹配内容填写要求如下:

  • 支持使用IPv4地址(例如:10.10.10.10),支持使用IP网段格式(例如:10.10.10.10/16)。

  • 客户端建连IP对应DCDN访问日志中的remote_ip,详见实时日志采集字段说明

  • 最多可以填写50个值,多个值之间使用英文逗号(,)分隔。

  • 可引用配置WAF IP分组中配置的IP分组。

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

  • 等于、不等于

  • 包含、不包含

  • 不存在

  • 前缀匹配

  • 后缀匹配

  • 正则匹配

访问请求的请求内容信息。Body体超过8 KB的请求将不再拦截。

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

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 存在

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

被请求的域名。

CookieName

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 存在

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配

Cookie的键名称。例如,在acw_tc:111这个Cookie中,awc_tc是Cookie的键名称。

BodyParameter

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 存在

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配

请求Body中的参数名称。例如,请求Body中包含以下JSON字符串a=1&b=2,那么ab就是参数名称。

Filename

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 存在、不存在

  • 内容为空

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

请求路径末尾的文件名。例如,在/abc/index.php中,index.php表示文件名。

File Extension

  • 等于、不等于

  • 等于多值之一、不等于任一值

  • 包含、不包含

  • 包含多值之一、不包含任一值

  • 存在、不存在

  • 内容为空

  • 长度等于、长度大于、长度小于

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

被请求文件的扩展名,例如:.png.php

逻辑符释义

逻辑符

说明

属于、不属于

匹配字段属于、不属于匹配内容。

包含、不包含

匹配字段包含、不包含匹配内容。

在列表中、不在列表中

匹配字段在、不在列表中匹配内容。

包含多值之一、不包含任一值

匹配字段包含匹配内容其中之一、匹配字段不包含任意一个匹配内容。

等于、不等于

匹配字段等于、不等于匹配内容。

等于多值之一、不等于任一值

匹配字段等于匹配内容其中之一、匹配字段不等于任意一个匹配内容。

长度等于、长度大于、长度小于

匹配字段的长度等于、大于、小于匹配内容。

存在、不存在

匹配字段存在、匹配字段不存在。

值小于、值等于、值大于

匹配字段的值小于、等于、大于匹配内容。

前缀匹配、后缀匹配

匹配字段的前缀、后缀包含匹配内容。

正则匹配、正则不匹配

匹配字段正则表达式、不匹配字段正则表达式

内容为空

匹配字段内容为空。

配置示例

  • 示例1:匹配字段为URI、逻辑符为包含、匹配内容/login.php,表示当被请求的路径包含/login.php时,则请求命中该规则。

  • 示例2:匹配字段为IP、逻辑符为属于、匹配内容为192.168.0.1,表示当发起连接的客户端IP为192.168.0.1时,则请求命中该规则。