You need to enable JavaScript to run this app.
导航
高级条件配置说明
最近更新时间:2024.10.18 14:32:35首次发布时间:2024.10.18 14:32:35

您在配置自定义防护策略时,可以设置高级条件,以匹配更多访问请求特征。本文提供高级条件配置的适用场景和参数字段说明。

什么时候需要配置高级条件?

在配置策略时,可以设置基本的特征信息,如请求路径、需要屏蔽的 IP 地址等信息。如果您还掌握了更详情的请求流量特征,可以配置高级条件参数,有助于提升防护效果。
例如,在面向/login.html设置自定义拦截响应规则时,需要对客户端 IP 为公网 IP 的访问请求返回相应信息,则可以参考如下配置条件。
Image
当用户通过公网 IP 客户端访问您的域名路径/login.html时,会收到抱歉,公网 IP 无法访问。的页面响应信息。

支持配置高级条件的策略类型

匹配字段说明

匹配字段

说明

支持的逻辑符

配置示例

请求协议

请求使用的协议类型,包括 HTTP 和 HTTPS。

  • 通用操作:等于、不等于
  • 字符串操作:属于匹配集合、不属于匹配集合
  • 正则匹配:正则

HTTP

请求uri

请求的统一资源标识符URI(Uniform Resource Identifier),包括 URI path 和 query string。

  • URI path:出现在域名之后,帮助服务器找到用户希望访问的特定资源,例如https://www.example.com/products/12345中的/products/12345
  • Query String:用于筛选、排序或修改资源,跟 URI path 以?连接,使用&分隔不同的参数,例如https://www.example.com/products/12345?section=54321&expand=comments中的section=54321&expand=comments
  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

https://www.example.com/products/12345?section=54321&expand=comments#概述

请求方法

请求的方法,用于指示客户端想要对服务器上的资源进行什么类型的操作,包括 GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE、PATCH 等。

  • 通用操作:等于、不等于
  • 属于匹配集合、不属于匹配集合
  • 正则匹配:正则

POST

请求路径

请求的路径,即 URI path。出现在域名之后,帮助服务器找到用户希望访问的特定资源,例如https://www.example.com/products/12345中的/products/12345

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

/products/12345

请求参数

请求的参数,即 query string。用于筛选、排序或修改资源。出现在?后面,并使用&分隔不同的参数,例如https://www.example.com/products/12345?section=54321&expand=comments中的section=54321&expand=comments

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

section=54321&expand=comments

请求头

请求的头部信息,包含客户端和请求本身的信息,例如客户端类型、认证信息等。

说明

使用请求头作为匹配字段时,WAF 会将请求的所有请求头中的信息作为匹配源。由于请求头信息中包含多个字段(涉及跨行文本匹配),且经负载均衡转发的请求会增加特定字段标识(如LogID),推荐使用正则匹配子串匹配来设置匹配条件。

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

host: www.test.com

请求 User-Agent

请求的客户端标识信息,例如浏览器名称和版本。

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

curl/7.52.1

请求 refer

请求来源标识信息,用于告知服务器,当前请求是从哪个页面或资源链接过来的。

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

https://www.test.com

请求 cookie

请求的 cookie 信息,标识用户是否已经登录以及登录的身份信息,以及其他访问信息。

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

session=31851234-5aa1-12345c978083; install_id=1.2.3;

请求体长度

请求体中数据的字节数(Content-Length)。

  • 通用操作:等于、不等于、大于、大于等于、小于、小于等于
  • 正则匹配:正则

100

请求体格式

请求体中数据的类型(Content-Type),例如:

  • text/plain: 纯文本数据。
  • text/html: HTML 文档。
  • application/json: JSON 数据。
  • application/xml: XML 数据。
  • application/x-www-form-urlencoded: 表单数据。
  • image/jpeg: JPEG 图片。
  • image/png: PNG 图片。
  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

application/json

x-forwarded-for

请求的客户端真实 IP,用于在代理服务器或负载均衡器等中间层将原始客户端的 IP 地址传递给目标服务器。
X-Forwarded-For头部字段的值通常是一个逗号分隔的 IP 地址列表,第一个 IP 地址是原始客户端的 IP 地址,后面的 IP 地址是经过的代理服务器或负载均衡器的 IP 地址。

  • 通用操作:等于、不等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则

10.0.0.1,192.168.1.1

客户端ip

发起请求的客户端 IP 地址。

  • 通用操作:等于、不等于
  • 字符串操作:属于匹配集合、不属于匹配集合
  • 正则匹配:正则
  • IP 操作:判断为 IP、判断为 IPV4、判断为 IPV6、判断为公网 IP、判断为私网 IP

10.0.0.1

自定义args

自定义请求参数。

  • 通用操作:等于、不等于、大于、大于等于、小于、小于等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则
  • IP 操作:判断为 IP、判断为 IPV4、判断为 IPV6、判断为公网 IP、判断为私网 IP
  • 自定义对象:product_id
  • 匹配内容:12345

自定义header

自定义请求头部字段,例如携带客户端设备类型Device-Type

  • 通用操作:等于、不等于、大于、大于等于、小于、小于等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则
  • IP 操作:判断为 IP、判断为 IPV4、判断为 IPV6、判断为公网 IP、判断为私网 IP
  • 自定义对象:Device-Type
  • 匹配内容:MAC

自定义cookie

自定义 Cookie 字段,例如用户语言设置language

  • 通用操作:等于、不等于、大于、大于等于、小于、小于等于
  • 字符串操作:包含子串、不包含子串、包含前缀、不包含前缀、包含后缀、不包含后缀、包含所有匹配集合、不包含所有匹配集合、属于匹配集合、不属于匹配集合
  • 正则匹配:正则
  • IP 操作:判断为 IP、判断为 IPV4、判断为 IPV6、判断为公网 IP、判断为私网 IP
  • 自定义对象:language
  • 匹配内容:zh-CN

逻辑运算符说明

以下为部分逻辑运算符的说明,帮助您了解高级条件配置的运算规则。说明中的 A 指待检测的请求内容,B 是您配置规则时自定义的匹配内容。

逻辑符

匹配内容要求

说明

示例

包含子串/不包含子串

单个字符串

A 包含子串 B,指 A 作为字符串,存在一个子串与 B 相等。

  • A:1234
  • B:23
  • 说明:A 包含子串 B。

A 不包含子串 B,指 A 作为字符串,不存在任何子串与 B 相等。

  • A:1234
  • B:45
  • 说明:A 不包含子串 B。

包含前缀/不包含前缀

单个字符串

A 包含前缀 B,指 A 作为字符串,存在以第一个字符为起始的子串与 B 相等。

  • A:1234
  • B:123
  • 说明: A 的起始字符为1,B 的起始字符也为1,且 A 包含 B。

A 不包含前缀 B,指 A 作为字符串,不存在以第一个字符为起始的子串与 B 相等。

  • A:1234
  • B:23
  • 说明:A 的起始字符为1,B 的起始字符为2,所以不满足。

包含后缀/不包含后缀

单个字符串

A 包含后缀 B,指 A 作为字符串,存在以最后一个字符为结尾的子串与 B 相等。

  • A:1234
  • B:234
  • 说明:A 以字符4结尾,B 也以字符4结尾,且 A 包含 B。

A 包含后缀 B,指 A 作为字符串,不存在以最后一个字符为结尾的子串与 B 相等。

  • A:1234
  • B:45
  • 说明:A 以字符4结尾, B 以字符5结尾,所以不满足。

包含所有匹配集合/不包含所有匹配集合

单个或多个字符串,多个字符串之间使用半角逗号(,)分隔。

A 包含所有匹配集合 B,指 A、B 作为集合,B 中的每一个元素都能在 A 中找到。

  • A:123,234,345
  • B:123,234
  • 说明:B 中的123234都能在 A 中找到。

A 不包含所有匹配集合 B,指 A、B 作为集合,B 中存在部分元素与 A 中的所有元素都不相等。

  • A:123,234,345
  • B:123,456
  • 说明:B 中的456无法在 A 中找到。

属于匹配集合/不属于匹配集合

单个或多个字符串,多个字符串之间使用半角逗号(,)分隔。

A 属于匹配集合 B, 即 B 包含 A,A 中的所有元素都能在 B 中找到。

  • A:123,234
  • B:123,234,345
  • 说明:A 中的123234都能在 B 中找到。

A 不属于匹配集合 B, 即 B 不包含 A,A 中存在部分元素不能在 B 中找到。

  • A:123,234
  • B:123,234,345
  • 说明:B 中的345无法在 A 中找到。

正则

正则表达式

说明

暂不支持使用回溯引用、捕获、断言等语法。

A 满足正则表达式 B。

如果希望检查请求内容中是否包含关键字符串,例如希望检查请求内容中是否包含关键字符串aabb可以使用正则表达式.*aa.*|.*bb.*

  • A:123aacc
  • B:.*aa.*|.*bb.*
  • 说明:123aacc中有字符串aa