配置防护模板时,需指定防护对象作为其应用目标。Web应用防火墙(Web Application Firewall,简称WAF)为每个接入的资产自动生成一个防护对象,通常无需手动配置。但在以下场景中,仍需手动调整防护对象或防护对象组:接入资产数量较多、防护规则复杂,或涉及特定解码、Cookie、自定义响应头等高级配置需求。本文介绍如何配置与管理防护对象及防护对象组,以实现更精细、高效的安全防护。
关键概念
防护对象:每个接入 WAF 的域名或云产品实例,系统会为其自动创建一个防护对象。在后续使用防护模板的过程中,需要选择防护对象作为模板的生效对象。
防护对象组:可以将多个防护对象加入一个防护对象组,以便集中管理。一个防护对象只能归属于一个防护对象组。
适用范围
在开始本文的配置前,需满足以下条件:
接入要求:已存在防护对象(已将Web业务接入WAF),若尚未将业务接入,请参见接入概述。
域名备案:若需要为云产品接入资源对应的域名添加防护对象,且域名托管在中国内地服务器上,则域名需完成 ICP 备案。更多信息,请参见如何查看域名ICP备案信息?
添加防护对象
资源接入WAF后,系统将自动为其创建一个防护对象,通常无需手动添加。但在以下情况下,需手动将域名添加为防护对象:
云产品接入场景:多个域名解析指向同一云产品实例,且需为各域名分别配置不同的防护规则。
混合云SDK集成场景:多个域名解析指向同一集群实例,且需为各域名分别配置不同的防护规则。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择。
在防护对象页签,单击添加防护对象。
在添加防护对象对话框,根据防护对象接入类型完成以下配置,单击确定。
云产品
配置项
说明
域名
填写需防护的域名,包括精确域名(如
www.aliyundoc.com)或通配符域名(如*.aliyundoc.com)。说明通配符域名匹配规则:仅能匹配同级别子域名。例如
*.aliyundoc.com能够匹配www.aliyundoc.com、example.aliyundoc.com等,但不能匹配aliyundoc.com或www.example.aliyundoc.com。优先级规则:当精确域名和通配符域名同时存在,且需防护的域名同时匹配这两者时,系统优先应用精确域名的防护规则。
云产品
选择域名对应的云产品接入实例类型。可选项:
ALB:应用型负载均衡ALB。
CLB4:传统型负载均衡CLB,监听协议为TCP。
CLB7:传统型负载均衡CLB,监听协议为HTTP/HTTPS。
ECS:云服务器ECS。
NLB:网络型负载均衡NLB。
实例
选择ALB实例ID。仅云产品类型选择为ALB时,需配置该项。
加入防护对象组
可将防护对象按需加入指定的防护对象组,以便批量管理防护规则。
防护对象加入对象组后,仅能通过防护对象组配置防护规则,不再支持为其单独配置防护规则。资源组
按需将防护对象加入资源组,简化资源管理和权限配置,提升管理效率。无配置需求时,请选择默认资源组。更多信息,请参见什么是资源组。
混合云SDK集成
配置项
说明
防护对象名称
填写一个便于识别的名称。
域名/IP
填写需防护的域名,包括精确域名(如
www.aliyundoc.com)或通配符域名(如*.aliyundoc.com)。说明通配符域名匹配规则:仅能匹配同级别子域名。例如
*.aliyundoc.com能够匹配www.aliyundoc.com、example.aliyundoc.com等,但不能匹配aliyundoc.com或www.example.aliyundoc.com。优先级规则:当精确域名和通配符域名同时存在,且需防护的域名同时匹配这两者时,系统优先应用精确域名的防护规则。
URL
填写需防护的URL路径。
加入防护对象组
可将防护对象按需加入指定的防护对象组,以便批量管理防护规则。
防护对象加入对象组后,仅能通过防护对象组配置防护规则,不再支持为其单独配置防护规则。资源组
按需将防护对象加入资源组,简化资源管理和权限配置,提升管理效率。无配置需求时,请选择默认资源组。更多信息,请参见什么是资源组。
配置防护对象的高级防护行为
WAF提供了以下高级设置,可以单击目标防护对象操作列的设置,跟据具体业务需求与安全策略,对防护对象的行为进行深度定制。
配置项 | 适用场景与说明 |
WAF前存在七层代理(如CDN)时,需设置客户端IP判定方式,确保WAF能够获取真实的客户端IP信息,以便进行安全分析(例如:安全报表的攻击源IP)。 | |
使用CC防护、扫描防护等防护模块,以及配置规则动作为滑块时,WAF会在响应中通过 Set-Cookie 下发跟踪与验证 Cookie,可按需配置其下发状态与 Secure 属性,以满足安全合规与业务兼容性需求。 | |
对于CNAME接入的域名,WAF支持在返回给客户端的响应中插入自定义头部,用于安全加固、策略控制或调试标识。 | |
WAF支持按需对JSON、XML、Form等数据格式及Base64、HTML实体等多种编码方式进行解析与还原,确保识别隐藏在多层编码或压缩中的恶意流量。 | |
允许 WAF 从请求中智能提取用户身份信息(如用户名、Token、JWT 主体等),并应用于扫描防护、BOT管理及自定义规则模块,实现基于账号维度的精细化安全管控。 |
客户端IP设置
在WAF链路设置页签,配置WAF前是否有七层代理(高防/CDN等)。详细信息,请参见获取真实客户端信息。
说明对于CNAME接入的域名以及云产品接入的ECS、CLB、NLB实例,若已在资源接入阶段完成该配置,则无需重复操作。
cookie设置
在WAF链路设置页签,配置跟踪cookie与滑块cookie。
跟踪cookie:使用CC防护、扫描防护等功能时,WAF默认会下发名为
acw_tc的 Cookie,用于识别和统计不同客户端的访问行为。可以通过下发状态开关,开启或关闭跟踪cookie。若仅允许该Cookie被下发到HTTPS请求中,可以开启secure属性。重要配置建议:建议开启跟踪Cookie的下发状态开关,否则将影响CC防护、扫描防护等防护模块的使用。
防护对象组限制:加入某个防护对象组的防护对象默认开启跟踪cookie,且不支持关闭跟踪cookie或开启secure属性。
生效规则:如果请求命中多个防护对象时,任意一个防护对象开启跟踪cookie或secure属性,所有被命中的防护对象都会同步开启相同的功能。
滑块cookie:滑块验证通过后,WAF默认会下发名为
acw_sc__v3的Cookie,用于标记该验证动作。若仅允许该Cookie被下发到HTTPS请求中,可以开启secure属性。重要开启滑块Cookie的secure属性后,将影响HTTP站点滑块功能的正常使用。
加入某个防护对象组的防护对象默认关闭secure属性,且不支持开启。
自定义响应头部(仅限CNAME接入)
在WAF链路设置页签,配置自定义响应头部。最多支持添加5个。若自定义响应头部的Header名与源站返回的响应头名称相同,那么该响应头的值将被替换为此处配置的Header值。
解码设置
在解码设置页签进行配置,具体说明,请参见附录:解码设置说明。
账号提取配置
在账号提取配置页签进行配置,每个防护对象支持配置5条,按照优先级排序。
账号提取的位置可选择:
Query String
Body
Cookie
Header
账号格式:
明文:如email***@qq.com。
jwt认证:通常在Header中,可以携带用户信息,通常格式为
Authorization : Bearer {Token},如果是JWT格式,需要额外指定解开后的账号字段。basic认证:通常在Header中,通常格式为
Authorization : Basic {Token}。
使用防护对象组管理防护对象
当需要为大量防护对象应用相同的防护规则时,使用防护对象组可以极大地提升管理效率。
在WAF控制台左侧导航栏,选择。
在防护对象组页签,单击新建对象组。
在新建防护对象组对话框,填写防护对象组名称、选择关联防护对象、添加备注信息后,单击确定。
说明关联防护对象中的待选择对象列表仅包含满足以下条件的防护对象:未加入任何防护对象组,且仅应用了默认防护模板或未应用任何防护模板。
已归属于某一防护对象组的防护对象不可再加入其他对象组;须先将其从原组中移出,才可加入其他组。
后续在创建防护模板时,可将生效对象选择为防护对象组,使模板对防护对象组中的所有对象生效。
日常运维
管理防护对象
查看防护对象已配置的防护规则:单击目标防护对象操作列的查看防护规则,在Web 核心防护页面,展示当前防护对象已关联的防护模板(已配置的防护规则)。
将防护对象加入防护对象组:单击目标防护对象操作列的。或选中多个防护对象,单击列表下方的加入防护组。
查看防护对象日志:若您已开启日志服务,可以单击目标防护对象操作列的.
删除防护对象:单击目标对象名称操作列的删除。仅手动添加的域名防护对象支持删除操作,自动生成的防护对象需要通过取消接入操作进行删除。
管理防护对象组
调整防护对象组中的防护对象:在防护对象组页签,单击目标防护对象组操作列的编辑,将防护对象移入或移出当前对象组。防护对象被移出当前对象组后,将自动应用默认防护模板。
调整防护对象组已配置的防护规则:在防护对象组页签,单击目标防护对象组操作列的配置规则,查看并调整当前防护对象组已关联的防护模板(已配置的防护规则)。
删除防护对象组:在防护对象组页签,定位到目标防护对象组,单击操作列的删除。
配额与限制
防护对象数量限制:不同WAF版本下,支持的防护对象、防护对象组数量,以及单个防护对象组可添加的防护对象数量存在差异,具体信息请参见版本说明。可以访问防护对象页面,查看可用的防护对象数,若已用完所有防护对象规格,请通过删除防护对象或升级版本解决。

防护对象预留规则:针对包年包月实例,WAF将预留版本内免费域名和额外扩展域名对应的防护对象规格。例如,已开通包年包月高级版实例(版本内包含5个免费域名、最多可添加600个防护对象),若额外购买2个域名扩展规格,WAF会预留7个(5+2)防护对象规格,最多还可以添加593个(600-7)防护对象。
防护对象配置限制:云产品接入的MSE实例、FC自定义域名不支持cookie设置。云产品接入的FC、MSE、SAE、APIG实例不支持解码设置。
附录:解码设置说明
云产品接入ALB实例时,默认不开启Base64解码,可按需进行开启。
对于混合云接入形态,需升级至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解析
说明:Multipart解析模块基于RFC 2046标准实现multipart/form-data格式的解析与重构机制。该模块支持HTTP文件上传及复杂表单数据的完整解析,包括文件字段、文本字段、边界分隔符及嵌套结构的识别与处理。解析过程包含边界检测、字段解析、文件内容提取及编码转换,通过标准化multipart格式解析提升WAF规则对文件上传及复杂表单载荷中恶意内容的检测能力。
示例:输入如下内容,Multipart解析后提取出
key为Hello,value为World。------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="Hello" World ------WebKitFormBoundary7MA4YWxkTrZu0gW--
GraphQL 解析
说明:GraphQL解析模块基于GraphQL规范实现查询语言的解析与重构机制。该模块支持GraphQL查询语句、变量定义、参数传递及指令的完整解析,包括字段选择、查询参数、变量替换、别名定义及嵌套查询的识别与处理。解析过程包含URL参数解析、JSON载荷处理、纯GraphQL语句解析及multipart文件上传格式支持,通过规范化GraphQL格式解析提升WAF规则对GraphQL载荷中恶意内容的检测能力。
示例:输入查询
HelloWorld{ desc(Hello:"World"){ Hello } },GraphQL结合提取出key为Hello,value为World。
解码
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!。
> 加入对象组