匹配字段以字段的形式为您提供多维度的配置选择。
字段分类
ESA的匹配字段支持3种类型:
标准字段:用于表示客户端请求或者响应中携带的标准协议(如:HTTP、IP、TLS等)相关信息,例如:主机名、请求标头、响应标头等。
扩展字段:用于表示ESA对客户端请求或者响应进行特定运算后获得的计算值,通常与HTTP请求的威胁情报有关。
原始字段:用于表示ESA保留客户端请求的原始属性值,通常用于在客户端请求穿过多个ESA功能模块的过程中依然保持原始属性值。
单条表达式 = (<匹配字段> <匹配运算符> <匹配值>),如(http.host eq "example-1.com")
标准字段
标准字段主要包含了HTTP请求中的常见字段值以及IP信息中的常见字段。
http.cookie
HTTP请求中携带的Cookie
标头。
字段名:
Cookie
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
"sessionid=330688;userid=abc123"
http.host
HTTP请求中使用的主机名。
字段名:
主机名
类型:
String
是否支持区分大小写:否
匹配值是否允许配置空字符串:否
示例值:
"www.example.com"
http.referer
HTTP请求中携带的Referer
标头。
字段名:
Referer
类型:
String
是否支持区分大小写:否
匹配值是否允许配置空字符串:是
示例值:
"http://www.example.com/index"
http.request.body.form
HTTP请求中携带的表单形式的请求正文(当Content-Type
标头值为application/x-www-form-urlencoded
时使用的请求正文格式),以 Map
(关联数组)形式表示。
字段名:
Body
查询字符串类型:
Map<Array<String>>
示例值:
{"username":["admin"]}
http.request.body.mime
从HTTP请求正文中检测到的MIME类型。支持常规资源类别video, audio, image, application, text
的最常见MIME类型。
字段名:MIME 类型
类型:
String
示例:
"application/json"
http.request.cookies
HTTP请求中携带的Cookie
标头,以 Map(关联数组)的形式表示。
字段名:Cookie 值
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
{"sessionid":["330668"]}
http.request.full_uri
HTTP请求的完整 URI,包括协议、主机名、路径和查询字符串。
字段名:URI 完整
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
"https://www.example.com/image/cat.jpg?width=400&height=300&format=webp"
http.request.headers
HTTP请求中包含的标头信息,以 Map(关联数组)的形式表示。关联数组的键(即:标头名称)里面包含的所有英文字母都必须使用小写形式。
字段名:标头
类型:
Object
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
{"content-type":["application/json"]}
http.request.method
HTTP请求使用的请求方法。
字段名:请求方法
类型:
String
示例值:
"GET"
http.request.timestamp.sec
ESA节点收到HTTP请求时的Unix时间戳(秒)。
字段名:请求时间戳
类型:
Integer
Unix时间:(1735019278)
示例值:
1735019278
http.request.uri
HTTP请求的 URI,包括路径和查询字符串。
字段名:URI
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
"/image/cat.jpg?width=400&height=300&format=webp"
http.request.uri.args
HTTP请求 URI 中的查询字符串,以 Map(关联数组)的形式表示。
字段名:URI 指定查询字符串
类型:
Map<Array<String>>
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
{"format":["webp"]}
说明仅在如下匹配运算符时支持空值:
等于
不等于
包含
与正则表达式匹配
http.request.uri.path
HTTP请求 URI 中的路径。
字段名:URI 路径
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
"/image/cat.jpg"
http.request.uri.path.extension
HTTP请求 URI 路径中文件的扩展名。
字段名:文件扩展名
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
URI path
Field value
/cat
""
/cat.jpg
"jpg"
/.jpg
""
/.cat.jpg
"jpg"
/cat.jpg.tar
"tar"
/cat.
""
/cat.JPG
"JPG"
http.request.uri.path.file_name
HTTP请求 URI 路径中的文件名。
字段名:文件名
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
URI path
Field value
/cat
"cat"
/cat.jpg
"cat"
/.jpg
""
/.cat.jpg
".cat"
/cat.jpg.tar
"cat.jpg"
/cat.
"cat"
/CAT.jpg
"CAT"
http.request.uri.path.full_file_name
HTTP请求 URI 路径中的完整文件名。
字段名:完整文件名
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
"cat.jpg"
http.request.uri.query
HTTP请求 URI 中的查询字符串。
字段名:URI 查询字符串
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:否
示例值:
"width=400&height=300&format=webp"
http.request.version
HTTP请求的 HTTP 协议版本。
字段名:HTTP 版本
类型:
String
示例值:
"HTTP/1.0"
"HTTP/1.1"
"HTTP/2.0"
"HTTP/3.0"
http.user_agent
HTTP请求中携带的 User-Agent 标头。
字段名:User Agent
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.X.X Safari/537.36"
http.x_forwarded_for
HTTP请求中携带的X-Forwarded-For
标头。
字段名:X-Forwarded-For
类型:
String
是否支持区分大小写:是
匹配值是否允许配置空字符串:是
示例值:
"192.168.0.1, 10.10.0.1"
ip.geoip.asnum
请求源 IP 对应网段归属的自治系统编号,详情请参见什么是ASN。
字段名:ASN 编号
示例值:
Number
示例:
37963
ip.geoip.continent
请求源 IP 归属的大洲。
字段名:洲
类型:
String
示例值:
AS
中文名称 | 英文名称 | 大洲编码/continent code |
非洲 | Africa | AF |
南极洲 | Antarctica | AN |
亚洲 | Asia | AS |
欧洲 | Europe | EU |
北美洲 | North America | NA |
大洋洲 | Oceania | OC |
南美洲 | South America | SA |
ip.geoip.country
请求源 IP 归属的国家/地区。详情请参见ISO 3166 标准介绍。
字段名:国家/地区
类型:
String
是否支持区分大小写:否
匹配值是否允许配置空字符串:否
示例值:
"CN"
ip.src
请求源 IP 地址。
字段名:客户端IP
类型:
IP address
是否支持区分大小写:否
匹配值是否允许配置空字符串:否
示例值:
192.0.2.1
ip.src.isp
请求源 IP 归属的互联网服务提供商。
字段名:运营商
类型:
String
示例值:
"100017"
中文名称 | 英文名称 | 运营商编码/isp code |
中国电信 | China-Telecom | 100017 |
中国移动 | China-Mobile | 100025 |
中国联通 | China-Unicom | 100026 |
中国网通 | China-Netcom | 100016 |
中国铁通 | China-Railcom | 100020 |
长城宽带 | GreatWall-Broadband | 100061 |
教育网 | China-Education-and-Research | 100027 |
广电网 | China-Cable-Television | 1000139 |
歌华 | GeHua | 100080 |
鹏博士 | DrPeng | 1000143 |
阿里巴巴 | AliBaBa | 100098 |
阿里云 | AliYun | 1000323 |
腾讯 | Tencent | 1000401 |
百度 | BaiDu | 100099 |
网宿 | ChinaNetCenter | 100093 |
ip.src.version
请求源 IP 的 IP 协议版本信息。
字段名:IP协议版本
类型:
String
示例值:
"IPv4"
"IPv6"
ip.src.subdivision_1_iso_code
请求源 IP 对应地理位置的第一层细分区域,详情请参见ISO 3166 标准介绍。
字段名:省份
类型:
String
是否支持区分大小写:是
示例值:
"CN-ZJ"
ip.src.region_code
请求源 IP 所在地理位置对应的负载均衡器所在区域。
字段名:负载均衡器所在区域
类型:
String
是否支持区分大小写:是
示例值:
"EAS"
名称 | 地区代码 |
东欧 | EEU |
西欧 | WEU |
北美 | NAM |
南美 | SAM |
中东 | ME |
北非 | NAF |
南非 | SAF |
大洋洲 | OC |
东亚 | EAS |
东南亚 | SEAS |
南亚 | SAS |
中国大陆 | CNM |
ssl
请求是否使用 SSL/TLS协议。
字段名:SSL/HTTPS
类型:
Boolean
示例值:
true
扩展字段
动态字段是ESA根据提供的定制化字段,帮助您针对一些特殊场景下进行配置。
ali.ja3_hash
JA3指纹是通过收集客户端在TLS握手过程中Client Hello消息的特定字段(这些字段包括TLS版本、可接受的密码套件、扩展列表、椭圆曲线和椭圆曲线点格式),并且对字段进行MD5哈希处理之后生成的。
字段名:JA3指纹
类型:
String
示例值:
d0bfcdbbf2c6aeb4e0fbcf8234fd6cb6
ali.ja4
JA4指纹是JA3指纹技术的一个进化版,JA4指纹包含了更多的握手过程信息或者是对原有信息的不同处理方式,以便提高指纹的唯一性和准确性。
字段名:JA4指纹
类型:
String
示例值:
d0bfcdbbf2c6aeb4e0fbcf8234fd6cb6
ali.js_detection.passed
已通过 JavaScript 检测。
字段名:已通过 JavaScript 检测
类型:
Boolean
示例值:
true
ali.static_resource
是否为静态请求。
字段名:静态请求
类型:
Boolean
示例值:
true
ali.tls_client_auth.cert_verified
已验证客户端证书。
字段名:已验证客户端证书
类型:
Boolean
示例值:
true
ali.tls_hash
请求中携带的 TLS 信息对应的哈希值。
字段名:TLS指纹
类型:
String
示例值:
ABC123HASH
原始字段
该机制确保客户端请求的原始属性值在流经ESA多级处理模块时保持持久化,避免因系统内部逻辑处理导致的源数据特征丢失。
http.request.body.raw
HTTP请求的原始正文内容。
字段名:HTTP 请求 Body
类型:
String
示例值:
"ABC123"