亚马逊AWS官方博客
在移动应用中集成 AWS WAF Bot Control 实现电商网站防护
电商网站面临着各种自动化工具的威胁,包括:
- 价格爬虫导致的竞争压力
- 库存查询机器人造成的系统负载
- 账号暴力破解影响用户安全
- 虚假订单与刷单行为
AWS WAF Bot Control 作为 AWS 提供的托管式规则组,能有效识别和管理自动化工具访问。虽然目前已有多篇关于 PC 端集成的文章,但移动端的集成方案相对较少。本文将重点介绍如何在 iOS 和 Android 应用中实现 Bot Control 防护。
AWS WAF Bot Control 概述
AWS WAF Bot Control 是 AWS WAF 提供的一项托管式规则组服务,专门用于检测和管理自动化流量访问。它通过先进的机器学习算法、行为分析和设备指纹技术,能够精确识别和分类不同类型的机器人流量,包括已验证的良性机器人(如搜索引擎爬虫)、未验证的机器人和恶意自动化工具。该服务支持多种验证机制,包括令牌验证、JavaScript 挑战和 CAPTCHA 集成,并提供灵活的响应策略,如允许、阻止、计数和验证等。
在电商场景中,Bot Control 可以有效防止价格爬取、控制库存查询、阻止批量下单和防范账号盗用等自动化攻击,同时确保合法用户访问不受影响。通过与 CloudFront、Application Load Balancer 或 API Gateway 的无缝集成,Bot Control 能够为 Web 应用程序、移动应用和 API 提供全方位的防护。此外,该服务还提供详细的监控和报告功能,帮助用户实时了解防护效果并持续优化防护策略。
Amazon WAF Bot Control 配置方法和执行流程
整体架构:
您可以阅读这篇文档了解详细的工作流和执行原理与基本配置:Protect against bots with AWS WAF Challenge and CAPTCHA actions。
Amazon WAF Bot Control 配置使用方法
1. 在 AWS WAF 控制台界面创建 Web ACLs 后,增加规则“Add rules”,选择“Add managed rule groups”,再选择“AWS managed rule groups(打开标红部分,并点击编辑页面)”。
2. 修改 Bot Control inspection level 为 Targeted ,并将默认版本修改为当前最新版本(默认版本是比较旧的版本,而新版本增加了很多规则和拦截功能),再开启机器学习功能(后续会出现模拟攻击的情况,需要学习正常的用户行为,来识别区分异常的访问)。
3. 配置 rule 的 matches 规则,可以增加多个。
如果 Statement 非常多(超过 5 个),可以切换到 JSON 模式,因为当前页面可视化模式只能支持 5 个。当切换到 JSON 模式编辑,Statement 数量超过 5 个,保存之后,无法用默认的可视化界面 Rule visual editor 模式打开,会出现错误,但不影响使用,只是警告无法用可视化模式打开,需要切换到 Rule JOSN editor 模式打开阅读/编辑。例子中包含了匹配“/index”的访问。
另外增加一个 Statement 2 ,实现对于 POST 方法的匹配,因为我们这次的侧重点是在于 iOS 和安卓 POST 接口访问。
4. 配置规则执行动作
SignalNonBrowserUserAgent
检查不是来自经过验证的机器人的请求,以查找似乎不是来自网络浏览器的用户代理字符串。此类别可以包括API请求。
规则操作:Block
标签:awswaf:managed:aws:bot-control:signal:non_browser_user_agent
和 awswaf:managed:aws:bot-control:SignalNonBrowserUserAgent
对于经过验证的机器人,规则组与该规则不匹配,并且不应用任何信号或规则标签。
注意:移动应用程序通常具有非浏览器用户代理,SignalNonBrowserUserAgent
规则在默认情况下会阻止这些代理,所以需要配置成脚本挑战。
TGT_VolumetricIpTokenAbsent
检查不是来自经过验证的机器人的请求,这些请求在过去 5 分钟内来自单个客户端 5 个或更多且不包含有效挑战令牌。有关令牌的更多信息,请参阅在 Web 请求中使用令牌 AWS WAF。
注意:如果来自同一客户端的请求最近缺少令牌,则此规则可能会与具有令牌的请求相匹配。
由于延迟,此规则适用的阈值可能略有不同。
此规则对缺失令牌的处理方式与令牌标签不同:awswaf:managed:token:absent
。令牌标签会标记没有令牌的单个请求。此规则会为每个客户端 IP 保留缺少令牌的请求计数,并与超过限制的客户端进行匹配。
规则操作:Challenge
标签:awswaf:managed:aws:bot-control:targeted:aggregate:volumetric:ip:token_absent
和 awswaf:managed:aws:bot-control:TGT_VolumetricIpTokenAbsent
Amazon WAF Bot Control 工作流程
没有集成 SDK 的工作流程:
集成了 SDK 的工作流程:
自定义规则(检测缺少令牌)
1. 在指定的 Web ACLs 的 Rules 列表增加 规则,选择“Add rules”,然后选择 “Add my own rules and rule groups”,再切换到 Rule JSON editor 模式,直接将以下内容覆盖到文本框中。
如下图所示,保存出现警告提示正常,打开出现警告就是代表不能用可视化界面展示,需要切换到 Rule JSON editor 模式查看/编辑。
移动端集成
通常集成的客户端会包含 Android 和 iOS,为了让代码更通用,以下例子采用 Kotlin/Swift 编码。
注意事项
移动端的 SDK 集成需要提 case,需要两天左右才能申请下来,最终会以 URL 的形式交付,每一种客户端会有一个对应的 URL ,通过 URL 下载相应的 sdk,每一种会有多个版本,尽量下载最新的版本进行集成。
iOS 版本
获取到 token 之后,增加请求地址的参数: “aws-waf-token=$token”
以下是获取 token 的简单例子:
Android 版本
同样,获取到 token 之后,增加请求地址的参数: awsWafApi.awsWafPostWithHeader(“aws-waf-token=$token”)
关于移动端集成 Amazon WAF,可以参考官方博客。
注意事项
即使在客户端集成了 Amazon WAF Bot Control 的专用 SDK 获取 Token,但是如果攻击者采用相同的方式获取到 Token,然后手动将参数传递到脚本中,再执行自动化脚本攻击,同样可以完成请求。为了尽可能降低此项风险,可以参考参考材料中的:WAF 部署小指南(九)利用 Amazon WAF Bot Control 增强网站安全与搜索引擎优化(SEO)表现。
总结
通过在移动应用中集成 AWS WAF Bot Control,我们成功构建了一套完整的自动化访问防护体系,在技术层面实现了精确的流量识别和高效的性能表现;在业务价值方面,显著降低了爬虫影响、系统负载和安全事件发生率,有效提升了平台的安全性和稳定性。实施过程中,我们总结出渐进式部署策略、定期密钥轮换、特殊时期规则调整等关键经验。展望未来,我们将持续优化系统,包括引入机器学习模型提升识别准确率、开发自定义规则引擎应对特定场景、优化 Token 管理机制提升可扩展性,并加强与其他安全服务的集成以构建纵深防御体系。此外,我们也将在业务层面建立更细粒度的访问控制策略,完善商业智能分析,探索新的应用场景,最终打造一个更安全、更高效的电商平台。
参考链接
Amazon AWF Bot Control 在 JS 端的集成与配置
WAF 部署小指南(九)利用 Amazon WAF Bot Control 增强网站安全与搜索引擎优化(SEO)表现