全部产品
Search
文档中心

Web 应用防火墙:匹配条件说明

更新时间:Jun 05, 2024

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

什么是匹配条件

匹配条件指需要Web 应用防火墙 WAF(Web Application Firewall)检测的请求特征。您在设置白名单规则自定义规则开通和配置Bot管理时,通过定义匹配条件,指定要检测的请求特征。如果某个请求满足规则中设置的匹配条件,则该请求命中对应规则;WAF会依据规则中设置的规则动作,对请求执行相应处置(例如,放行、拦截、校验等)。匹配条件

匹配条件匹配字段逻辑符匹配内容组成。配置示例如下:

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

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

重要

使用URL编码、HTML编码、Unicode编码等常见编码的请求内容,会在解码后再按照匹配内容做匹配。

支持的匹配字段

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

说明
  • 按量付费版本匹配规则分为高级规则与基础规则,高级规则与基础规则的计费标准不同,详细计费信息请参见计费项

  • 包年包月企业版及以上版本支持正则匹配等高级规则(支持高级规则的版本,不额外收取高级规则费用),包年包月不同版本规则支持情况请参见版本说明

匹配字段

说明

支持的逻辑符

URI

请求的统一资源标识符URI(Uniform Resource Identifier),表示被请求的资源的路径。一般来说,URI=URI Path + Query String

对应匹配内容以/开头,不包含域名,例如,/login.php

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

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

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

IP

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

匹配内容填写要求如下:

  • 支持使用IPv4地址(例如,1.XX.XX.1)、IPv6地址(例如,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff)。

  • 支持使用IP网段格式(例如,1.XX.XX.1/16)。

  • 每输入一个IP地址,按回车进行确认。

  • 最多支持设置100个IP地址。

  • 属于、不属于

说明

单个防护规则最多可填写100个IP或IP网段。例如,某条防护规则中包含两条匹配字段为IP的匹配条件,则两条匹配条件中的IP或IP网段总数不能超过100个。多个IP或IP网段之间使用英文逗号(,)分隔。

Referer

请求的来源网址,即该请求从哪个页面跳转产生。

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

User-Agent

发起请求的客户端的浏览器标识、渲染引擎标识和版本信息等浏览器相关信息。

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Query String

请求中的查询字符串,具体指URL中问号(?)后面的部分。

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

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

  • 存在、不存在

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Cookie

请求中的Cookie信息。

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

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

  • 存在、不存在

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

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Content-Type

请求指定的响应HTTP内容类型,即多用途互联网邮件扩展类型MIME(Multipurpose Internet Mail Extensions)类型信息。

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

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

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

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Content-Length

请求的响应内容所包含的字节数。取值范围:0~2147483648。

  • 等于、值大于、值小于

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中问号(?)后面的部分。例如,www.aliyundoc.com/request_path?param1=a&param2=b中,param1param2都是请求参数。

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

Server-Port

服务器端口。

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

File Extension

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

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Filename

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

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Host

被请求的域名。

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配、正则不匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Cookie Name

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

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

Body Parameter

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

重要

使用该匹配字段的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项

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

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

  • 存在、不存在

  • 内容为空

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

  • 前缀匹配、后缀匹配

  • 正则匹配

    重要

    使用该逻辑符的自定义规则为高级规则。高级规则与基础规则的计费标准不同,具体信息,请参见计费项