匹配字段

匹配字段以字段的形式为您提供多维度的配置选择。

字段分类

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

  • 是否支持区分大小写:是

  • 匹配值是否允许配置空字符串:否

  • 示例值:

    "htt­ps://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"