当网站、H5页面,或App内嵌H5页面业务面临恶意爬虫、自动化脚本攻击、黄牛抢购等威胁时,可以创建Bot-Web防护模板,防御网页爬虫,确保业务安全。
操作步骤
进入Web防护界面。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。单击新建模板。
步骤一:防护场景定义
填写模板名称与模板介绍,以便于您进行后续管理。
选择防护目标特征,支持全局生效与定制匹配条件两种类型。
全局生效:适用于仅存在网页/H5环境的场景。
定制匹配条件:适用于除网页/H5环境外,还存在APP/小程序环境,或希望针对特定的业务接口(如登录、秒杀等)进行防护的场景。
全局生效
配置防护目标为全局生效,无需输入流量特征。
定制匹配条件
配置防护目标为定制匹配条件,依据输入特征进行匹配。通过单击新增条件添加一个条件。每个条件由匹配字段、逻辑符和匹配内容组成。配置示例如下:
说明若规则包含多个条件,则请求必须满足所有条件(逻辑与关系),才能命中该规则。关于匹配字段和逻辑符的详细说明,请参见匹配条件说明。
匹配字段
逻辑符
匹配内容
说明
URI Path
包含
/login.php当请求的路径包含
/login.php时,则请求命中该规则。IP
属于
192.1.XX.XX当客户端IP为
192.1.XX.XX时,则请求命中该规则。
勾选是否排除静态文件,静态文件请求通常不涉及业务逻辑,且其内容本身不易被用于注入攻击,排除静态文件可减少检测负载,使WAF专注于保护动态接口。建议选择默认的静态文件类型,也可自定义添加类型。
单击创建模板。
步骤二:编辑模板规则
在编辑模板页的人机校验区域,可单击编辑配置如下人机校验规则。
选择验证模式,支持JS验证或令牌挑战两种类型。
JS验证:适用于低强度日常防护场景。
令牌挑战:适用于高强度对抗场景,建议在重点防护时段(如大促活动开始前数分钟)启用。
JS验证
规则触发后,WAF将返回JS代码,正常浏览器客户端将执行JS代码获取通行证并重发请求,而恶意流量由于未携带通行证从而被拦截,认证通过的客户端在一段时间(默认30分钟)内,其所有请求将被直接放行,无需重复校验。
令牌挑战
规则触发后,WAF将返回JS代码,正常浏览器客户端将执行JS代码进行请求加签并重发请求,而恶意请求由于无签名信息从而被拦截。可选项:
签名时间戳异常:指签名时间戳异常时,请求将被拦截。
WebDriver攻击:指遭遇WebDriver攻击时,请求将被拦截。
在规则灰度区域,配置规则针对不同维度的对象的生效比例。开启规则灰度后,还需要设置维度和灰度比例。维度包括:IP、自定义Header、自定义参数、自定义Cookie、Session、网页端UMID。
说明规则灰度根据配置的维度生效,而非对请求按比例随机生效规则。例如,当维度为IP且灰度比例为10%时,WAF将选择约10%的IP地址;被选中的IP地址,其所有请求均应用该规则,而非对所有请求按10%的比例随机应用。
在生效模式区域,选择规则的生效时间。
永久生效(默认):防护模板开启时,规则永久生效。
按时间段生效:防护规则仅在指定的一段时间内生效。
按周期生效:防护规则仅在指定的时间周期内生效。
在风险识别区域,可以单击新建,创建风险识别规则。基于WAF内建的手机号信誉数据库,实现针对黄牛等异常手机号的访问阻断,适用于手机号登录注册类场景,更多信息,请参见风险识别。
在策略配置区域,基于阿里云经验沉淀的常见Bot特征库,列举了恶意BOT、疑似BOT和友好BOT三类规则,可以单击目标规则状态列的
图标,开启或关闭规则,或单击编辑对规则进行修改。重要以下部分规则存在误杀(误拦截)风险,不当的配置可能导致正常请求被拦截。建议在正式启用规则前,先将处置动作设置为观察,或结合规则灰度,优先在非生产环境进行测试,并根据实际业务特征进行调优后再上线。
配置建议
恶意BOT
规则分类
规则名称
误杀风险说明
浏览器探针
开发者工具、模拟器工具
低风险
浏览器环境异常
低风险
自动化工具、无头浏览器
低风险
系统环境异常
低风险,对于部分使用 XP 操作系统的用户存在风险
时间戳异常
中风险,对于打开网页超过 2 小时未刷新,并直接提交的请求,可能存在误杀
WebSDK版本异常
低风险,对于手工集成 WebSDK 的老版本用户可能存在风险
设备伪造
设备硬件信息伪造、浏览器属性伪造、操作系统与环境伪造
低风险
采集信息伪造、网络与地理位置伪造
低风险,WAF前置七层代理(如CDN、高防)但未启用代理配置,可能出现源IP识别不准导致的误杀
爬虫客户端
Meta-ExternalAgent、perplexitbot、chatgpt等AI爬虫流量
低风险
Python工具流量
低风险
爬虫工具流量
低风险
疑似BOT
规则分类
规则名称
误杀风险说明
操作行为分析
所有规则
中风险,可能误杀鼠标灵敏度过低的用户
脚本客户端
所有规则
低风险,需要根据业务情况判断,例如Native APP 环境不能开启Okhttp工具流量规则;使用flutter构建业务关联时,不能开启Dart工具流量规则
IDC机房
所有规则
中风险,对于支付回调接口,阿里云无影访问,WAF前置七层代理但未启用代理配置场景,可能误杀
威胁情报
伪造搜索引擎蜘蛛
低风险
爬虫威胁情报IP库、爬虫威胁情报指纹库
中风险,对于公共出口网络(如小区宽带、公司)或WAF前置七层代理但未启用代理配置场景,可能出现源IP识别错误导致误杀,建议将处置动作设为滑块或JS校验
AI智能防护
路径序列异常、设备异常、恶意团伙行为、资源分布异常、时序异常
中风险,对于公共出口网络(如小区宽带、公司)或WAF前置七层代理但未启用代理配置场景,可能出现源IP识别错误导致误杀,建议将处置动作设为滑块或JS校验
会话异常
高风险,对于公共出口网络(如小区宽带、公司)或WAF前置七层代理但未启用代理配置场景,可能出现源IP识别错误导致误杀,建议将处置动作设为滑块或JS校验
访问行为分析
持续性无采集信息访问、持续性无Session访问
低风险,必须集成 WebSDK,否则不携带采集信息
交互轨迹批量重放
低风险
同一Session关联IP频繁变化、同一设备关联IP频繁变化
低风险
IP访问路径较少、IP访问路径较多、客户端种类频繁变化、同一IP关联UA频繁变化
中风险,对于公共出口网络(如小区宽带、公司)或WAF前置七层代理但未启用代理配置场景,可能出现源IP识别错误导致误杀,建议将处置动作设为滑块或JS校验
友好BOT
规则分类
规则名称
误杀风险说明
正常客户端
所有规则
建议保持默认配置,放行请求
编辑规则处置动作
配置项
说明
JS验证
WAF向客户端返回一段JavaScript验证代码,标准浏览器将自动执行该代码。若客户端正常执行完成,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求,否则拦截请求。
拦截
拦截命中规则的请求,并向发起请求的客户端返回拦截响应页面。
说明WAF默认使用统一的拦截响应页面,也可以通过自定义响应功能,自定义拦截响应页面。
观察
不拦截命中规则的请求,仅通过日志记录请求命中的情况。在试运行规则时,可以先通过观察模式分析WAF日志,以确认未产生误拦截,再将其调整为其他规则动作。
滑块
WAF向客户端返回滑动验证页面。若客户端成功完成滑动验证,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求,否则拦截请求。
严格滑块
WAF向客户端返回滑动验证页面。若客户端成功完成滑动验证,则放行该请求;否则拦截请求。在此模式下,客户端每次命中该规则的请求均需进行滑动验证。
回源标记
表示客户可以自定义Header名称及内容(规则类型、规则ID、网页端UMID),WAF不会直接处理,而是会通过新增Header的方式将命中信息返回给源站,客户可以与后端风控系统结合做业务侧处理。
说明启用JS验证或滑块后,客户端通过验证时,WAF将在响应头中通过Set-Cookie 设置名为
acw_sc__v2(JS验证)或acw_sc__v3(滑块验证)的 Cookie。客户端在后续请求中会在 Cookie 头中携带该标识。
单击下一步。
步骤三:选择生效范围
在生效范围页面,选中需要应用的防护对象或防护对象组,单击
图标,将该防护对象或防护对象组移入已选择区域内,单击确认。
步骤四:Web SDK集成
Bot防护能力依赖SDK采集的信息,若跳过此步骤,将无法获得完整的防护能力,因此强烈建议您进行集成。
若防护目标涉及跨域域名,须在WebSDK集成列表页开启对应域名的自动集成开关,或完成手动集成配置。
阿里云提供基于JavaScript的SDK,用于增强Web浏览器场景下的防护能力,并解决潜在的兼容性问题,提供自动集成与手动集成两种方式。
自动集成:一键开启集成,无需修改业务代码。
手动集成:ALB、MSE、APIG、FC、SAE接入的防护对象不支持自动注入WebSDK,需要选择手动集成方式。
自动集成
在Web防护列表右上角,单击WebSDK集成列表。为目标防护对象开启自动注入WebSDK。
创建Web防护模板,并开启了自动集成Web SDK,将会在HTTP报文的Header中植入
ssxmod_itna、ssxmod_itna2、ssxmod_itna3Cookie用于获取客户端浏览器指纹信息。收集指纹信息包括HTTP报文host字段、浏览器高度和宽度等。启用自动集成后,系统将自动在相应防护对象的HTML页面中注入SDK,用于采集浏览器环境信息、黑产工具探针数据及操作行为日志(不含个人敏感信息)。
手动集成
在Web防护列表右上角,单击WebSDK集成列表,然后单击获取SDK链接。请将获取到的<script>节点置于页面上其他所有<script>节点之前以保证最先加载。
日常运维
编辑模板
单击目标模板操作列的编辑,在编辑模板面板中对模板进行编辑。
删除模板
单击目标模板操作列的删除,在删除对话框中确认删除信息后单击确认。
复制模板
单击目标模板操作列的复制,在复制对话框中确认复制信息后单击确认。
开启或关闭模板
单击目标模板模板开关列的
开关,可开启或关闭该模板。查看规则
单击目标模板的
图标,查看该模板的规则信息,单击目标规则状态列的
开关,可开启或关闭对应规则。
应用于生产环境
为避免影响正常业务,请勿在生产环境直接创建并启用模板。建议遵循以下流程进行部署。
配置白名单:在创建模板前,建议创建白名单规则,将可信IP加入白名单,防止可信请求被新规则误拦截。
灰度测试:模板创建完成后,可以使用以下三种方式,在部署到生产环境前进行观察测试。
将规则应用于非生产环境进行测试。
将处置动作设置为观察。
开启规则灰度。
应用至生产环境:确认误报率在可接受范围内后,将处置动作调整为目标动作,并应用于生产环境。
持续监控与优化:持续关注安全报表与日志,根据业务变化和实际防护效果,动态调整和优化规则。