防护对象和防护对象组都是防护规则的生效单元。您可以将防护对象或防护对象组关联到防护模板,实现Web应用防火墙(Web Application Firewall,简称WAF)防护。本文介绍如何添加、管理防护对象和防护对象组。
背景信息
防护对象
防护对象是接入WAF防护的域名或云产品实例,是防护规则的最小生效单元。
防护对象可通过如下两种方式生成:
自动添加:云产品接入的实例或CNAME接入的域名会自动被添加为防护对象。
手动添加:如果您需要为云产品接入的ALB实例、CLB实例、ECS实例和NLB实例中的某一个或多个域名单独配置防护规则时,您可以手动将域名添加为防护对象。具体操作,请参见手动添加防护对象。
不同接入方式自动添加的防护对象、手动添加防护对象的支持情况,以及防护对象规格限制说明,如下表所示。
接入方式 | 自动添加的防护对象 | 是否支持手动添加防护对象 | 规格限制 |
云产品接入(为ALB实例开启WAF防护) | ALB实例 | 支持将实例中的域名手动添加为防护对象 |
|
云产品接入(为MSE云原生网关实例开启WAF防护) | MSE实例(包括实例下的路由) | 不支持 | |
云产品接入(为FC自定义域名开启WAF防护) | 域名 | 不支持 | |
CLB实例、ECS实例和NLB实例 | 支持将实例中的域名手动添加为防护对象 | ||
域名 | 不支持 | ||
不支持 | 支持将接入的域名手动添加为防护对象 |
防护对象组
防护对象组是防护对象的合集,也是防护规则的生效单元。您可以将多个防护对象加入到一个防护对象组,通过为防护对象组配置防护规则,实现为组内所有防护对象批量配置防护规则。
一个防护对象只能归属于一个防护对象组。
包年包月基础版 | 包年包月高级版 | 包年包月企业版 | 包年包月旗舰版 | 按量付费版 |
最多支持10个防护对象组。 | 最多支持10个防护对象组。 | 最多支持10个防护对象组。 | 最多支持10个防护对象组。 | 最多支持100个防护对象组。 |
单个防护对象组最多支持添加50个防护对象。 | 单个防护对象组最多支持添加50个防护对象。 | 单个防护对象组最多支持添加50个防护对象。 | 单个防护对象组最多支持添加50个防护对象。 | 单个防护对象组最多支持添加100个防护对象。 |
前提条件
已开通包年包月版WAF 3.0或按量付费版WAF 3.0服务。
已在接入管理页面完成Web业务接入。
如果您需要手动添加CLB实例、ECS实例和NLB实例中的域名,且域名托管在中国内地服务器上,需完成阿里云ICP备案关于阿里云ICP备案的具体操作,请参见如何进行ICP备案。
说明在阿里云ICP代备案管理系统提交ICP备案订单时,系统会根据您提交的基本信息自动识别本次提交订单的ICP备案类型,自动为您匹配对应备案类型需进行的ICP备案流程。
手动添加防护对象
如果您需要单独为如下域名配置防护规则,您需要手动将域名添加为防护对象:
通过云产品接入WAF的ALB实例、CLB实例、ECS实例或NLB实例中的域名。
通过混合云SDK集成模式接入WAF的域名。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择。
在防护对象页签,单击添加防护对象。
在添加防护对象对话框,根据防护对象接入类型完成以下配置,单击确定。
云产品
如果您需要将ALB实例、CLB实例、ECS实例和NLB实例中的域名添加为防护对象,选择防护对象接入类型为云产品,并完成如下配置。
配置项
说明
域名
填写要防护的域名。支持填写精确域名(例如,
www.aliyundoc.com)或通配符域名(例如,*.aliyundoc.com)。说明通配符域名不能匹配对应的主域名,例如,
*.aliyundoc.com不能匹配aliyundoc.com。通配符域名不能匹配不同级别的子域名,例如,
*.aliyundoc.com不能匹配www.example.aliyundoc.com。通配符域名能够匹配所有同级别的子域名,例如,
*.aliyundoc.com能够匹配www.aliyundoc.com、example.aliyundoc.com等。如果防护对象中同时存在精确域名和能够匹配该精确域名的通配符域名,精确域名的防护规则优先生效。
云产品
选择域名服务器对应的云产品类型。可选项:
ALB:表示应用负载均衡ALB服务。
CLB4:表示四层传统型负载均衡CLB服务。
CLB7:表示七层传统型负载均衡CLB服务。
ECS:表示云服务器ECS服务。
NLB:表示网络型负载均衡NLB服务。
实例
选择域名服务器对应的实例ID。仅云产品类型为ALB时,需配置该项。
说明如果ALB实例不在列表中,请先完成云产品接入。具体操作,请参见为ALB实例开启WAF防护。
加入防护对象组
根据需要,将防护对象加入到指定的防护对象组,方便为多个防护对象批量配置防护规则。
防护对象加入对象组后,只支持通过防护对象组来配置防护规则,不再支持单独为防护对象配置防护规则。如果您希望单独为防护对象配置防护规则,可跳过该设置。
说明如果要加入的防护对象组不存在,您可以跳过该设置,在创建防护对象组后,再将防护对象加入到防护对象组。关于创建防护对象组的具体操作,请参见创建防护对象组。
混合云SDK集成
如果需要将通过混合云SDK集成模式接入WAF 3.0的域名添加为防护对象,选择防护对象接入类型为混合云SDK集成,并完成如下配置。
配置项
说明
防护对象名称
填写要添加的防护对象名称。
域名/IP
填写要防护的域名。支持填写精确域名(例如,
www.aliyundoc.com)或通配符域名(例如,*.aliyundoc.com)。说明通配符域名不能匹配对应的主域名,例如,
*.aliyundoc.com不能匹配aliyundoc.com。通配符域名不能匹配不同级别的子域名,例如,
*.aliyundoc.com不能匹配www.example.aliyundoc.com。通配符域名能够匹配所有同级别的子域名,例如,
*.aliyundoc.com能够匹配www.aliyundoc.com、example.aliyundoc.com等。如果防护对象中同时存在精确域名和能够匹配该精确域名的通配符域名,精确域名的防护规则优先生效。
URL
填写要防护的URL路径。
加入防护对象组
根据需要,将防护对象加入到指定的防护对象组,方便为多个防护对象批量配置防护规则。
防护对象加入对象组后,只支持通过防护对象组来配置防护规则,不再支持单独为防护对象配置防护规则。如果您希望单独为防护对象配置防护规则,可跳过该设置。
说明如果要加入的防护对象组不存在,您可以跳过该设置,在创建防护对象组后,再将防护对象加入到防护对象组。关于创建防护对象组的具体操作,请参见创建防护对象组。
成功添加防护对象后,您可以防护对象列表,查看并管理防护对象。具体操作,请参见管理防护对象。
创建防护对象组
您可以创建防护对象组,并关联防护对象,批量为防护对象配置防护规则。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择。
在防护对象组页签,单击新建对象组。
在新建防护对象组对话框,填写防护对象组名称、选择关联防护对象、添加备注信息后,单击确定。
说明关联防护对象中的待选择对象列表只包含当前未加入任何防护对象组,并且只应用了默认防护模板或没有应用任何防护模板的防护对象。
如果防护对象已经归属于其他防护对象组,您必须先将该防护对象从原有防护对象组中移出,然后才能将该防护对象加入到当前防护对象组。具体操作,请参见编辑防护对象组。
成功添加防护对象组后,您可以在防护对象组页签,管理防护对象组。具体操作,请参见管理防护对象组。
管理防护对象
您可以在防护对象页签,查看和管理防护对象。
设置防护对象,单击目标对象名称操作列的设置。
功能
说明
WAF链路设置
客户端IP设置
如果WAF前存在高防或CDN等反向代理设备,您可以设置客户端IP判定方式,指定字段识别真实的客户端IP,以供WAF识别并进行防护规则匹配(如IP黑名单)和报表展示(如攻击源IP)。
单击目标防护对象操作列的设置,配置WAF前是否有七层代理(高防/CDN等)、客户端IP判定方式。更多信息,请参见通过CNAME接入为网站开启WAF防护。
说明CNAME接入的域名、CLB实例、ECS实例:如果在接入时已完成该配置,则无需重复配置。
ALB实例、MSE实例、FC自定义域名、混合云SDK集成模式接入的域名:可根据业务需要进行该配置。
cookie设置
跟踪cookie
使用CC防护、扫描防护等功能时,Cookie中不包含
acw_tc的请求,WAF默认会在响应中插入acw_tc来识别和统计不同的客户端访问,通过分析客户端携带的Cookie信息,结合您配置的CC防护规则、统计对象为session的扫描防护规则、统计对象为session的自定义频率设置规则和统计结果判断业务流量中是否存在CC攻击行为。您可以通过下发状态开关,开启或关闭跟踪cookie。如果您只允许该cookie被下发到HTTPS请求中,您可以开启cookie的secure属性。
重要建议您开启跟踪cookie的下发状态开关。否则,将影响CC防护、扫描防护等功能的使用。
加入某个防护对象组的防护对象默认开启跟踪cookie,且不支持关闭跟踪cookie、开启secure属性。
MSE实例、FC自定义域名不支持设置secure属性。
生效规则:如果请求命中多个防护对象时,任意一个防护对象开启跟踪cookie或secure属性,所有被命中的防护对象都会同步开启相同的功能。
滑块cookie
滑块验证通过后,WAF会默认下发滑块cookie
acw_sc__v3,标记该验证动作。如果您只允许该cookie被下发到HTTPS站点,您可以开启cookie的secure属性。重要开启secure属性后,将影响HTTP站点滑块功能的正常使用。
加入某个防护对象组的防护对象默认关闭secure属性,且不支持开启。
MSE实例、FC自定义域名不支持设置secure属性。
自定义响应头部
WAF可以在响应中插入自定义头部,最多支持添加5个。如果自定义响应头部的Header名与源站返回的响应头名称相同,那么该响应头的值将被替换为在此处配置的Header值。
解码设置
WAF支持对JSON、XML、Form等数据格式及Base64、HTML实体等多种编码方式进行解析与还原,确保识别隐藏在多层编码或压缩中的恶意流量。可以根据实际业务需求进行勾选,具体的解码设置说明,请参见附录。
账号提取配置
配置账号的提取规则后,可以在扫描防护、BOT管理、自定义规则中进行引用,每个防护对象最多配置5条,按照优先级排序。
账号提取的位置可选择:
Query String
Body
Cookie
Header
账号格式:
明文:如email***@qq.com。
jwt认证:通常在Header中,可以携带用户信息,通常格式为Authorization : Bearer {Token},如果是JWT格式,需要额外指定解开后的账号字段。
basic认证:通常在Header中,通常格式为Authorization : Basic {Token}。
单击目标对象名称操作列的查看防护规则,在Web 核心防护页面,查看防护对象已配置的防护规则。
说明您也可以在防护规则页面,为防护对象配置更多的防护规则。具体操作,请参见Web核心防护。
单击目标对象名称操作列的
。功能
说明
加入对象组
如需将多个防护对象加入到同一个对象组,可以选中多个防护对象,单击列表下方的加入防护组。
查看防护日志
为防护对象开启日志采集、查询相关日志数据。具体操作,请参见开启或关闭日志服务。
单击目标对象名称操作列的删除,即可删除防护对象。
说明只有手动添加的域名防护对象支持删除操作。
如果您需要删除CLB实例、ECS实例,您需要访问接入管理页面,定位到目标实例或引流端口,单击操作列的取消接入,取消端口引流后,再删除防护对象。
为防护对象绑定或解除标签,将鼠标悬停在目标防护对象标签列的
图标上,单击绑定,在编辑标签对话框,选择或输入标签键,并填写标签值。说明一次最多绑定20个标签键,允许标签值为空。
输入标签键和标签值时,最多支持128个字符,不支持以
aliyun或acs:开头,且不能包含http://和https://。您可以分别在防护对象列表或接入列表为防护对象绑定或修改标签,且通过任意一种方式修改标签都会在防护对象列表和接入列表同步生效。
您也可以选中多个防护对象,批量增加或删除标签。
管理防护对象组
您可以在防护对象组页签,查看和管理防护对象组。
功能 | 说明 | |
编辑防护对象组 | 单击目标防护对象组操作列的编辑,将防护对象从待选择对象移入已选择对象组,或将防护对象移出已选择对象组。 说明
| |
查看并配置防护规则 | 单击目标防护对象操作列的配置规则,在防护规则页面,为防护对象组配置防护规则。为防护对象组配置的规则将对对象组中的所有防护对象生效。 | |
删除防护对象组 | 定位到目标防护对象组,单击操作列的删除。 | |
附录
解码设置说明
云产品接入ALB实例时,默认不开启Base64解码,可按需进行开启。
云产品接入的FC、MSE、SAE、APIG实例暂不支持解码设置。
对于混合云接入形态,需升级至xagent4.1.0版本后,解码设置依据用户配置生效。
Key-Value 解析
JSON解析
说明:JSON解析模块基于RFC 7159标准实现JavaScript Object Notation格式的解析与重构机制。该模块支持JSON语法规范的解析,包括键值对对象、数组、字符串及数字的识别与处理。解析过程包含语法验证、数据类型转换、嵌套结构处理及Unicode转义序列解码,通过标准化JSON格式解析提升WAF规则对JSON载荷中恶意内容的检测能力。
示例:输入
{"Hello":"World"},Json解析后提取出key为Hello,value为World。
XML解析
说明:XML解析模块基于XML规范(W3C Recommendation)实现可扩展标记语言的解析与重构机制。该模块支持XML文档结构的完整解析,包括元素、属性、文本内容、CDATA段及处理指令的识别与处理。解析过程包含语法验证、实体引用解析、命名空间处理及文档结构标准化,通过规范化XML格式解析提升WAF规则对XML载荷中恶意内容的检测能力。
示例:输入
<Hello attr="desc"><![CDATA[World]]></Hello>,XML解析后提取出key为Hello,value为World,key2为Hello.attr,value2为desc。
Form解析
说明:Form解析模块基于RFC 1866标准实现application/x-www-form-urlencoded格式的解析与重构机制。该模块支持HTML表单数据的完整解析,包括键值对参数、数组参数、文件上传字段及嵌套结构的识别与处理。解析过程包含URL解码、字符集处理、参数分隔符识别及数据类型转换,通过标准化表单数据格式解析提升WAF规则对表单载荷中恶意内容的检测能力。
示例:输入
Hello=World,Form解析后提取出key为Hello,value为World。
Multipart解析
说明:Form解析模块基于RFC 1866标准实现application/x-www-form-urlencoded格式的解析与重构机制。该模块支持HTML表单数据的完整解析,包括键值对参数、数组参数、文件上传字段及嵌套结构的识别与处理。解析过程包含URL解码、字符集处理、参数分隔符识别及数据类型转换,通过标准化表单数据格式解析提升WAF规则对表单载荷中恶意内容的检测能力。
示例:输入
Hello=World,Form解析后提取出key为Hello,value为World。
GraphQL 解析
说明:Multipart解析模块基于RFC 2046标准实现multipart/form-data格式的解析与重构机制。该模块支持HTTP文件上传及复杂表单数据的完整解析,包括文件字段、文本字段、边界分隔符及嵌套结构的识别与处理。解析过程包含边界检测、字段解析、文件内容提取及编码转换,通过标准化multipart格式解析提升WAF规则对文件上传及复杂表单载荷中恶意内容的检测能力。
示例:输入如下内容,Multipart解析后提取出
key为Hello,value为World。------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="Hello" World ------WebKitFormBoundary7MA4YWxkTrZu0gW--
解码
Base64解码
说明:Base64解码引擎实现RFC 4648标准定义的Base64编码逆向转换算法。该模块采用标准Base64字符集(A-Z, a-z, 0-9, +, /)及填充字符(=)的规范化处理。解码过程包含字符验证、填充处理、字节对齐及数据完整性校验,确保二进制数据的准确性和传输可靠性。
示例:输入
SGVsbG8gV29scmQh,Base64解码后输出Hello Wolrd!。
HTML实体解码
说明:HTML实体解码引擎基于HTML 5.2规范(W3C Recommendation)实现字符实体引用的解析机制。该模块支持数字字符引用(&#x;)、命名字符实体(&)的标准化处理。
示例:输入
Hello World!输出:Hello World!。
PHP 解码
说明:PHP序列化解码引擎实现PHP serialize()函数的逆向操作机制。该模块基于PHP序列化协议规范,解析序列化格式的语法结构,包括类型标识符(i, s, a, O等)、长度元数据及递归数据结构。解码过程包含类型验证、内存安全检查及对象图重建,支持标量类型、复合类型及对象序列化的完整解析。
示例:输入
payload=O:5:"Hello":1:{s:4:"desc";s:6:"World!";},PHP反序列化解码后提取出key为payload.Hello.desc,对应的value为World!。
Java 反序列化解码
说明:Java反序列化解码(Java Deserialization Decoding)基于Java序列化协议实现ObjectInputStream的逆向操作。该模块解析Java序列化流的二进制格式,包括类描述符、字段元数据及对象状态信息。解码过程遵循JVM序列化规范,支持复杂对象图的递归解析。
示例:输入
rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAFSGVsbG90AAZXb3JsZCF4,Java反序列化解码后提取到其中的Java类为java.util.HashMap。
UTF-7 解码
说明:UTF-7解码引擎基于RFC 2152标准实现可变长度字符编码的转换机制。该模块处理UTF-7的编码标记(+/-)及Base64编码的Unicode字符序列。解码算法支持7位ASCII环境的Unicode传输,包含编码状态机、字符集切换及传统协议兼容性处理,适用于邮件系统及MIME消息传输场景。
示例:输入
+/v8 +AEgAZQBsAGwAbwAgAFcAbwByAGwAZAAh-,输出Hello World!。
Unicode解码
说明:Unicode解码(Unicode Decoding)是基于Unicode标准(ISO/IEC 10646)的字符编码转换机制。该模块实现UTF-16转义序列的解析,支持\uXXXX四字节十六进制表示法及\u{XXXXXX}扩展格式。解码过程遵循Unicode 15.0规范,确保字符编码的标准化处理。
示例:输入
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064\u0021,Unicode解码后输出Hello World!。
URL解码
说明:URL解码(URL Decoding)基于RFC 3986标准实现百分号编码(Percent-Encoding)的逆向转换。该机制处理URI通用语法中的保留字符、非ASCII字符和特殊字符编码。解码算法遵循application/x-www-form-urlencoded MIME类型规范,支持HTTP请求参数的标准解析。
示例:输入
Hello%20World%21,URL解码后输出Hello World!。
Hex解码
说明:十六进制解码(Hexadecimal Decoding)实现基于RFC 4648标准的十六进制字符串到二进制数据的转换。该模块采用大端序(Big-Endian)字节序处理,支持标准十六进制字符集(0-9, A-F, a-f)。解码过程包含输入验证、字符规范化及字节对齐处理。
示例:输入
\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21,Hex解码后输出Hello World!。
Oct解码
说明:OCT八进制解码引擎用于处理以反斜杠加八进制数字表示的字符编码(如
\123)。该模块基于ASCII编码表,将八进制数转换为对应字符,支持标准0–377(即0–255)的八进制范围,并可批量解析混合文本中的八进制转义序列。示例:输入
\110\145\154\154\157\040\127\157\162\154\144\041,Oct解码后输出Hello World!。
解压缩
GZIP 解压
说明:Gzip解码引擎基于RFC 1952标准实现,采用DEFLATE压缩算法的解压缩机制。该模块处理Gzip文件格式的头部解析(魔数0x1f8b、压缩方法、标志位)、CRC32校验及压缩数据块的解压。解码算法支持流式处理和批量解压,包含状态机管理、多成员文件处理及错误恢复机制,适用于Web传输、文件归档及数据压缩场景。
示例:输入二进制文件数据
1f 8b 08 00 11 39 00 69 00 ff 01 0c 00 f3 ff 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 a3 1c 29 1c 0c 00 00 00(为方便排版,此处以HEX格式呈现),GZIP解码后输出Hello World!。
预处理
注释压缩
说明:注释删减模块基于SQL标准及MySQL扩展语法实现注释语法的识别与移除机制。该模块支持ANSI SQL标准定义的两种注释格式:单行注释(--后跟任意字符至行尾)及多行注释(/* /包围的任意字符序列),同时兼容MySQL特有的条件注释语法(/! ... /)。解码过程包含注释标记识别、嵌套注释处理、版本条件解析及语法边界验证,通过移除注释内容提升WAF规则引擎对恶意SQL语句的检测精度,有效降低攻击者利用注释进行规则绕过的风险。
示例:输入
/*!40101 SET */@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;,注释删减处理后输出SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;。
空格压缩
说明:空格删减模块实现多空格字符的规范化处理机制。该模块检测输入字符串中的连续空格序列,将多个连续空格字符压缩为单个空格字符。处理过程包含前导空格、尾随空格及中间连续空格的统一处理,确保文本格式的标准化和一致性。
示例:输入
Hello World!,空格删减处理后输出Hello World!。