概述
在站点运营中,经常会出现恶意占用资源、业务滥用和暴力破解等问题。这些问题如果被忽视,将会导致服务质量下降、产生高额成本账单,甚至可能会导致敏感数据泄露。为了有效管理这些风险,客户端访问频率是一个重要的指标。恶意客户端通常会以更高的频率进行访问,以便快速达到破解登录、占用资源和爬取内容的目的。使用合适的阈值限制客户端访问频率,可以有效区分正常客户端和恶意客户端,从而缓解资源占用和滥用的风险。
注意:
在管理和对抗爬虫时,仅使用速率限制策略效果有限,请结合 Bot管理 功能,制定完整的爬虫管理策略。 典型场景与配置方式
速率限制常用于区分正常客户访问与恶意访问,通过选择合适的统计方式、限制阈值和处置方式,速率限制可以帮助您缓解安全风险。速率限制配置分为下列类型:
精准速率限制:用户定义的访问频率控制策略。支持多个条件组合匹配请求,限制每个请求来源请求速率,适用于绝大部分场景下用于区分正常用户访问和恶意的高频访问。
托管定制策略:由腾讯安全专家定制的策略,不支持控制台调整策略。详情请参见 托管定制规则。 精准匹配规则
示例场景一:限制登陆 API 接口访问频率,缓解撞库和暴力破解攻击
在面临撞库和暴力破解攻击的场景中,攻击者通常会频繁地使用访问登陆 API 接口尝试获取或破解信息。通过限制对登陆接口的请求频率,我们可以大幅缓解攻击者的破解尝试,从而有效抵御这类攻击,保护敏感信息不被泄露。例如:站点域名 www.example.com
提供了对外接口为/api/UpdateConfig
,该接口允许的访问调用频次为100次/分钟,当超过频次限制后,将封禁该 IP 10分钟。操作步骤如下:
2. 单击安全防护 > Web 防护。默认为站点级防护策略,单击域名级防护策略 Tab,在域名级防护策略中,单击目标域名进入目标域名防护策略配置界面,例如:www.example.com
。
3. 定位到速率限制卡片,单击精准速率限制下方的添加规则。
4. 进入添加规则页面,选择写入接口限制规则模版,单击添加。
说明:
规则模板中的各配置字段及示意值仅供场景化示例参考。请根据您的具体业务需求和正常流量水平进行评估,并相应调整触发防护的判断条件、速率阈值和执行处置。
5. 配置判断条件、速率阈值及执行处置。以示例场景为例,可配置匹配字段为请求方式(Method)等于POST
HEAD
且请求路径(Path)等于/api/UpdateConfig
,调整统计方式为单个客户端 IP 接受由源站到 EdgeOne 节点的响应,调整速率阈值为计数周期 1 分钟内,计数超过 100 次时触发。调整触发后执行动作为拦截,处置持续时间为 10 分钟。
6. 单击保存并发布后,规则将部署生效。
示例场景二:限制导致 404 状态码的请求速率,缓解资源随机扫描
在恶意客户端随机扫描站点图片资源,尝试爬取内容时,常常会因为访问路径不存在导致源站响应404
错误。通过限制导致源站404
状态码的请求频率,EdgeOne 能够避免恶意攻击者大规模地扫描和请求静态资源,从而减少源站的错误响应,缓解服务器压力,提升静态资源站点的安全性和稳定性。例如:针对站点域名 www.example.com
的图片静态资源.jpg
.jpeg
.webp
.png
.svg
,当资源不存在响应 404 时,访问在 10 秒内超过 200 次时,则直接拦截对应的客户端 IP 请求 60 秒。操作步骤如下:
2. 单击安全防护 > Web 防护。默认为站点级防护策略,单击域名级防护策略 Tab,在域名级防护策略中,单击目标域名进入目标域名防护策略配置界面,例如:www.example.com
。
3. 定位到速率限制卡片,单击精准速率限制下方的添加规则。
4. 进入添加规则页面,选择静态资源随机扫描规则模版,点击添加。
说明:
规则模板中的各配置字段及示意值仅供场景化示例参考。请根据您的具体业务需求和正常流量水平进行评估,并相应调整触发防护的判断条件、速率阈值和执行处置。
5. 配置判断条件、速率阈值及执行处置。以示例场景为例,可调整配置匹配字段为 HTTP 状态码(企业版套餐支持)等于404
且请求路径(Path)的文件后缀匹配内容包括.jpg
.jpeg
.webp
.png
.svg
的请求。配置统计方式为单个客户端 IP 接受由源站到 EdgeOne 节点的响应,调整速率阈值为计数周期 1 分钟内,计数超过 200 次时触发。调整触发后执行动作为拦截,处置持续时间为 1 分钟。
6. 单击保存并发布后,规则将部署生效。
示例场景三:限制高并发的搜索引擎爬虫访问 Web 站点,缓解对正常业务的影响
某 Y 搜索引擎供应商使用了大规模分布式的爬虫架构,对访问行为缺少限制,导致其爬虫行为较激进,短时间内产生较大访问量,对正常业务可能造成影响,并消耗大量资源。因此通过速率限制识别并限制该类爬虫访问,缓解其影响。例如:站点 www.example.com
由于 Y 搜索引擎爬虫高频访问影响正常业务。通过 Web 安全分析 分析,Y 搜索引擎的爬虫使用的分布式架构在 JA3 指纹
和 User-Agent
特征聚集,因此配置速率限制规则,当相同 JA3 指纹 和 User-Agent 的访问请求在 30 秒统计窗口超过 60 次时,对该 JA3 指纹和 User-Agent 特征相同的请求进行拦截,持续拦截10分钟。操作步骤如下: 2. 单击安全防护 > Web 防护。默认为站点级防护策略,单击域名级防护策略 Tab,在域名级防护策略中,单击目标域名进入目标域名防护策略配置界面,例如:www.example.com
。
3. 定位到速率限制卡片,单击精准速率限制下方的添加规则。
4. 进入添加规则页面,选择创建空白规则,填写规则名称,单击添加。
5. 配置判断条件、速率阈值及执行处置。以示例场景为例,可配置匹配字段为应用层协议等于HTTPS
,配置统计方式为客户端 IP 请求到 EdgeOne 节点,请求特征中 JA3 指纹和 HTTP 头部中的 User-Agent 特征相同的客户端,速率阈值为计数周期 30 秒内,计数超过 60 次时触发。触发后,执行动作为拦截,处置持续时间为 10 分钟。
6. 单击保存并发布后,规则将部署生效。
相关参考
创建速率限制规则时,需配置规则匹配对象、触发方式以及处置方式,各配置项说明如下:
注意:
如果您当前的速率规则需要基于某个已知的 HTTP 头部确定值进行匹配时,可通过配置判断条件 > 指定匹配字段为 HTTP 指定头部参数值进行匹配。
如果您当前的速率规则需要基于一类可能存在相同值的 HTTP 头部进行匹配时,可通过配置速率阈值 > 请求特征为指定名称的 HTTP 头部名称进行匹配。
匹配对象
根据请求来源、头部特征、响应状态码等设定匹配条件组合1,速率限制规则仅对匹配条件的业务进行管控。匹配条件说明及不同套餐的支持程度详情请参见 匹配条件。 触发方式
说明:
1. 未达到速率限制阈值时,请求不会进行处置,也不会记录日志。
2. 具体配置选项与可配置范围根据订阅套餐不同有所区别,具体参考 套餐选型对比。 3. 计数周期选项中,1 秒选项仅支持客户端 IP 和客户端 IP(优先匹配 XFF 头部)请求特征。
规则将根据触发方式内配置的统计规则进行计数统计,在计数周期内累计请求次数超过阈值时,规则触发并执行对应限制动作2。统计基于技术周期和统计方式,对指定特征维度(如:客户端 IP)下不同特征值的请求次数计数1。您可以定义触发方式的下列参数: 计数周期:用于计数时,滚动时间窗口的长度。支持最短 1 秒,最长 1 小时。
统计方式:区分请求来源的方式,速率限制为每个请求来源限制请求速率。详见统计维度。 速率阈值:计数周期内,每个来源(如客户端 IP)允许请求的次数。
触发状态保持时长:当规则触发后,对该来源匹配条件的请求持续限制3的时长。支持最短 1 秒,最长 30 天。 请求特征
支持基于一个或多个请求特征进行统计,当统计维度内的请求特征达到触发方式内设置的速率阈值时,则触发速率限制规则。您可以指定下列统计维度1: 客户端 IP:来自相同源 IP 的请求将计入同一个计数器,超过阈值时触发规则的处置动作。
客户端 IP(优先匹配 XFF 头部):来自相同客户端 IP 的请求将计入同一个计数器,超过阈值时触发规则的处置动作。当X-Forwarded-For 头部存在且包含合法 IP 列表时,将优先使用X-Forwarded-For 头部中第一个 IP 进行统计。
指定名称的 Cookie:提取请求头部中指定名称的 Cookie 值,相同 Cookie 值的请求计入同一个计数器,超过阈值时触发规则的处置动作。
例如:当站点使用名为 user-session
的 Cookie 标记访问会话时,您可以配置指定名称为 user-session
的 Cookie 值作为统计维度,对每个会话的请求速率进行统计。当单个会话中的请求速率超过阈值时,触发规则配置的处置动作。
指定名称的 HTTP 头部:提取请求头部中指定名称的头部值,相同头部值的请求计入同一个计数器,超过阈值时触发规则的处置动作。例如:您可以指定 Origin 头部,以限制来自每个外部域的访问频率,当某个外部域访问频率超过阈值时,触发规则配置的处置动作。
指定名称的 URL 查询参数:提取请求 URL 查询参数中指定名称的参数值,相同查询参数值的请求计入同一个计数器,超过阈值时触发规则的处置动作。
例如:当站点使用名为 user-session
的查询参数标记访问会话时,您可以配置指定名称为 user-session
的查询参数作为统计维度,对每个会话的请求速率进行统计。当单个会话中的请求速率超过阈值时,触发规则配置的处置动作。
请求的 JA3 指纹4:计算每个请求的 JA3 指纹,讲 JA3 指纹相同的请求计数统计,超过阈值时触发规则的处置动作。每个请求对应了唯一的 JA3 指纹值,不存在键值模型,因此无需输入指定参数。考虑到 JA3 的特性,建议您将其与 User-Agent 头部统计维度同时配置,以较好地区分客户端。 请求的访问路径:提取请求的访问路径(URL Path,不包含 URL 查询参数),相同访问路径的请求计入同一个计数器,超过阈值时出发规则的处置动作。
说明:
注 1
:根据您订阅的套餐,支持配置的匹配条件、统计维度和处置方式选项可能会有所不同。详情请参考 套餐选项对比。 注 2:
如果存在多条速率限制规则,一个请求可同时匹配多条规则内容,会同时根据不同规则的统计方式来决定是否触发该规则。当统计触发其中一个规则并被拦截后,其余规则将不会再被触发。当多条规则同时被触发时,按照已触发规则的优先级顺序执行,优先级数值小的规则优先匹配。详见 Web 防护请求处理顺序。 注 3
:规则触发后,仅对匹配当前规则的请求生效。 注 4
:JA3 指纹是基于客户端的 TLS 信息形成的识别信息,可以有效区分来自不同 Bot 网络的请求。当请求基于非 SSL 的 HTTP 协议发起时,请求的 JA3 指纹为空。如果需要使用 JA3 指纹,请确保您当前域名已开启 Bot 管理功能。 注 5:如果您需要通过多种统计维度组合,对请求特征相同的请求进行统计,需订阅 EdgeOne 企业版套餐。
处置方式
当请求超过限制阈值时,采取相应的限制动作。支持拦截、观察、JavaScript 挑战、重定向至 URL 和响应自定义页面1,详细处置方式说明,请参见 处置方式。
本页内容是否解决了您的问题?