匹配条件
概述
Web 防护功能通过匹配请求的不同条件来实现访问管控。以下详细介绍了各种匹配条件选项、匹配条件说明以及相关配置方式和限制。
使用匹配条件
您可以使用规则的匹配条件指定规则的生效范围,控制防护例外规则、自定义规则、速率限制、自定义 Bot 规则的生效范围。
说明:
当配置了多个匹配条件时,规则仅在全部匹配条件都满足时生效。
匹配方式
当匹配字段和匹配内容满足匹配方式要求时,匹配条件成立。
说明:
请求头部的匹配字段(例如:Referer 头部、自定义头部等)使用等于、不等于、包含、不包含、通配符匹配、通配符不匹配、正则匹配匹配方式时,仅当该头部存在且不为空时才能满足匹配条件。
匹配方式 | 匹配方式说明 |
等于(在列表中) | 匹配内容列表中,包含匹配字段的完整字符串,不区分大小写。 匹配内容可配置多个匹配字段,当匹配字段匹配任一值时,即满足匹配条件。 |
不等于(不在列表中) | 匹配内容列表中,不包含匹配字段的完整字符串,不区分大小写。 匹配内容可配置多个值,当所有值均不匹配匹配字段时,即满足匹配条件。 |
包含(关键字) | 匹配字段字符串中,包含了匹配内容列表中的任一的完整字符串内容,不区分大小写。 匹配内容可配置多个值,当任一值不在匹配字段中出现时,即满足匹配条件。 |
不包含(关键字) | 匹配字段字符串中,不包含匹配内容列表中的任一的完整字符串内容,不区分大小写。 匹配内容可配置多个值,当所有值均不在匹配字段中出现时,即满足匹配条件。 |
通配符匹配 | 匹配内容列表中,包含可通配匹配字段的字符串,不区分大小写。支持通配的字符有: 星号 * :匹配零个或多个字符。问号 ? :匹配一个字符。匹配内容可配置多个通配符表达式,当匹配字段匹配任一通配符表达式时,即满足匹配条件。 匹配内容中未包含通配符时,该匹配字段按完整匹配方式进行判断。 |
通配符不匹配 | 匹配内容列表中,不包含可通配匹配字段的字符串,不区分大小写。支持通配的字符有: 星号 * :匹配零个或多个字符。问号 ? :匹配一个字符。匹配内容可配置多个通配符表达式,当匹配字段与所有通配符表达式都不匹配时,即满足匹配条件。 匹配内容中未包含通配符时,该匹配字段按完整匹配方式进行判断。 |
长度大于 | 匹配字段存在,且数据长度(按字符串包含字符数计)大于指定长度。 |
长度小于 | 匹配字段存在,且数据长度(按字符串包含字符数计)小于指定长度。 |
内容为空 | 匹配字段存在,且为空字符串 |
不存在 | 匹配字段不存在。 |
正则匹配 | 匹配字段数据可满足匹配内容中的正则表达式。 |
匹配条件选项及说明
说明:
1. 支持配置的匹配条件,根据规则类型和您订阅的 EdgeOne 套餐有些区别。具体支持情况请参考套餐选型对比。
2. 单条规则中所有匹配内容中,匹配项目数量总和不超过 128 个(包括同时匹配多个值的匹配条件)。
匹配条件选项 | 匹配条件说明 |
请求客户端 IP | 匹配请求的来源 IP 地址。支持基于地域、ASN、IP 和 CIDR 网段进行匹配。 使用 匹配 、不匹配 逻辑符号选项时,可匹配客户端 IP 、CIDR 网段和 IP 分组。单个匹配条件最多可配置8个 IP 分组。 使用 地域包含 、地域不包含 逻辑符号选项时,可匹配客户端 IP 的归属地域。使用 ASN 归属 、ASN 归属不等于 逻辑符号选项时,可匹配客户端 IP 所归属的 BGP 自治系统编号(ASN)。 |
请求客户端 IP(优先匹配 XFF 头部) | 当请求携带合法 XFF(X-Forwarded-For)头部时,匹配请求 XFF 头部第一个 IP;否则,匹配请求来源 IP 地址。 使用 匹配 、不匹配 逻辑符号选项时,可匹配客户端 IP 、CIDR 网段和 IP 分组。单个匹配条件最多可配置 8 个 IP 分组。 使用 地域包含 、地域不包含 逻辑符号选项时,可匹配客户端 IP 的归属地域。使用 ASN 归属 、ASN 归属不等于 逻辑符号选项时,可匹配客户端 IP 所归属的 BGP 自治系统编号(ASN)。 |
自定义请求头部 | 匹配请求的指定头部,提供额外参数选项匹配特定名称的头部值。 忽略大小写。 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
请求 URL | 匹配请求的 URL。例如:/example.html?region=cn 。 忽略大小写。 不包含 Hostname 包含 URL 查询参数 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
请求来源(Referer 头部) | 匹配请求的 Referer 头部。 忽略大小写。 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
请求内容类型(Accept 头部) | 匹配请求的 Accept 头部。 忽略大小写。 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
请求路径(Path) | 匹配请求 URL 的路径部分。例如:/example.html 或者 /api/v2/login 。 不包含 Hostname。 不包含查询参数。 忽略大小写。 |
请求方式(Method) | 匹配请求的方法。 忽略大小写。 支持多项选择:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS、CONNECT。 |
请求 Cookie | 匹配指定请求 Cookie 头部参数值。需指定 Cookie 参数名称。 忽略大小写。 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
XFF 扩展头部 | 匹配请求的 XFF(X-Forwarded-For)头部。 忽略大小写。 支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
网络层协议 | 匹配请求使用的 IP 协议类型。 支持多项选择:IPv4、IPv6。 |
应用层协议 | 匹配请求使用的应用层协议。 支持多项选择:HTTP、HTTPS。 |
响应状态码 | 匹配响应的 HTTP 状态码。 仅支持速率限制,选择基于响应统计时支持配置。 最多支持同时匹配20个状态码。 |
请求正文 | 匹配请求的正文。 仅支持匹配请求正文的前 8KB 数据。 |