通过配置频次控制规则和自定义规则,保护您网站的登录注册、支付交易等核心接口。这些策略能够有效防止暴力破解、恶意爬虫、DDoS等自动化攻击,保障核心业务的安全性和稳健性。
背景信息
Web应用的核心价值在于其业务接口,如用户认证、交易支付、信息交互等。这些业务接口是攻击者窃取高价值数据和造成直接经济损失的主要目标。针对这些接口的自动化攻击(如撞库、暴力破解、短信轰炸、API刷量)不仅威胁用户数据安全,还可能造成企业资损和业务中断。本方案旨在帮助用户解决以下问题:
账号安全:防止因撞库、暴力破解导致的用户账号批量失窃。
业务资损:杜绝短信、邮件、优惠券等资源接口被恶意滥用,避免造成直接经济损失。
业务稳定性:保护核心API不被恶意爬虫或攻击者刷垮,保障业务的连续性和正常用户的服务质量(QoS)。
数据安全:防止核心业务数据被恶意、大规模地爬取。
应用场景
用户登录接口:攻击者使用自动化工具,携带大量已泄露的用户名和密码字典,进行高频次的登录尝试(撞库攻击)。
短信验证码接口:攻击者恶意、高频地调用此接口,在消耗企业短信费用的同时,骚扰用户(短信轰炸)。
核心数据API:竞争对手或恶意爬虫高频次地抓取商品信息、价格等核心数据,不仅造成数据泄露,还大量消耗服务器资源。
操作步骤
配置频次控制规则
频次控制规则是保护业务接口免受自动化滥用的关键机制,通过限制单一客户端在特定时间内的访问频率来缓解攻击,同时避免后端服务过载。
仅标准版及以上套餐支持配置频次控制规则。
核心API防刷
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
在WAF页面,选择频次控制规则,单击新增规则。规则如下:对于核心API,当同一个IP在60秒内调用超过100次,则对60秒内该IP对核心API的请求超过100次的部分进行拦截。
填写规则名称,例如:核心API防刷。
填写如果请求匹配以下规则...,匹配字段选择URI 路径,匹配运算符选择等于其中任意一个,匹配值填写核心API的URL路径(不包含参数),选择不区分大小写,勾选对缓存资源生效。
说明URI路径是定位具体资源的一部分,是指URL中不包含协议头、HOST和参数的部分。例如,URL为
https://example.com/blog/posts/123?page=123
,其中URI路径就是/blog/posts/123
。且具有以下相同特征…选择客户端IP。
且频次超过…选择60秒100次(可以根据自身业务进行适当的调整)。
则执行…的操作项选择仅对超过频次的请求执行和拦截,响应的拦截界面选择默认拦截页面。
单击确定,核心API防刷的防护即可创建完成并生效。
登录接口防爆破
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
在WAF页面,选择频次控制规则,单击新增规则。规则如下:对于登录注册接口,当同一个IP在60秒内调用超过20次,对这60秒内该IP的所有登录注册请求进行JS挑战,JS挑战持续5分钟。
填写规则名称,例如:登录注册接口频次控制。
填写如果请求匹配以下规则...,匹配字段选择URI 路径,匹配运算符选择等于其中任意一个,匹配值填写核心API的URL路径(不包含参数),选择不区分大小写,勾选对缓存资源生效。
说明URI路径是定位具体资源的一部分,是指URL中不包含协议头、HOST和参数的部分。例如,URL为
https://example.com/blog/posts/123?page=123
,其中URI路径就是/blog/posts/123
。且具有以下相同特征…选择客户端IP。
且频次超过…选择60秒20次(可以根据自身业务进行适当的调整)。
则执行…的操作项选择对所有请求执行和JS挑战,持续时间为5分钟。
单击确定,登录接口防爆破防护即可创建完成并生效。
配置自定义规则拦截常见脚本
自定义规则提供了丰富的匹配条件和拦截条件。匹配条件包含且不限于IP地址、User-Agent、URL路径、HTTP方法等。用户可以自定义匹配条件来实现满足自身业务的WAF规则。
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
单击自定义规则页签,进入自定义规则页签,单击新增规则。规则如下:当请求的
Header
中,User-Agent
包含以下的值python-requests、Scrapy、Go-http-client、Postman、curl、wget
,则直接拦截该请求。填写规则名称,例如:拦截自动化脚本请求。
在如果请求匹配以下规则...区域,设置匹配字段为标头和
user-agent
,匹配运算符为包含以下各项,匹配值为python-requests、Scrapy、Go-http-client、Postman、curl、wget
,选择不区分大小写。在则执行…区域,设置操作项为拦截,响应的拦截页面选择默认拦截页面。
单击确定。拦截自动化脚本请求的防护规则即可创建成功并生效。