限速规则限定一个时间段内只允许放行一定数量的请求,但是如果该请求命中了白名单规则,也命中限速规则时,会触发限速规则计数,提前突破限速阈值,导致IP被封禁。
背景信息
用户配置了一个URI包含 /api
、IP 限速10分钟内5次的自定义规则,同时通过白名单配置了URI等于/api/v1/pay
针对自定义规则加白的规则,希望实现的效果是针对/api/v1/pay
无限制访问,但是对于其他/api
请求要有限速效果。
白名单规则配置 | |
自定义规则配置 |
用户预期:/api/v1/pay
无限制访问,其他/api
路径参与请求计数,10分钟内超过5次则封禁IP,拒绝访问。
实际表现:多次访问/api/v1/pay
无问题,但第一次访问/api/v2/login
路径就被拒绝访问。
原因分析
命中白名单规则的请求同时命中限速规则,会触发限速规则计数。用户短时间多次访问/api/v1/pay
,命中了自定义规则中URI包含/api
的匹配条件,触发了限速规则计数,超过限速阈值导致IP封禁,所以首次访问/api/v2/login
时就直接被拒绝。
解决方案
避免使用白名单规则组合自定义规则的方案,直接调整自定义规则,精准匹配需要进行限速的路径。
以下配置数据均为示例信息,请根据实际业务需求进行相应配置。
步骤一:配置自定义规则
访问WAF控制台-Web核心防护页面,在自定义规则区域,单击新建模板完成以下配置。
单击新建规则为自定义模板新建规则配置。
重要黑名单生效范围请选择仅作用于当前规则的匹配条件。
步骤二:测试验证
查看是否影响其他路径访问。
多次访问
/api/v1/pay
接口不会触发自定义规则的计数条件,因此不会导致IP被封禁,从而不影响/api/v2/login
等其它业务路径的正常访问,符合预期效果。查看是否会对特定接口进行限速处理。
多次访问
/api/v2/login
,页面显示405拦截响应,复制您的请求ID用于对象拦截查询。在WAF控制台-对象拦截查询页面,粘贴输入请求ID进行查询,查看防护模块和规则ID。
在WAF控制台-Web核心防护页面,搜索规则ID,可搜到对应的自定义模板规则,则自定义配置成功。