概述
硬封 IP 能挡住攻击,也会连带封掉共享出口下的真实用户,而机器人可轮换地址。分层响应把“一律封禁”换成按可疑度递增的证明要求,让成本落在发起方身上。
关键步骤
- 按速率、User-Agent、行为等信号为请求打分。
- 中等分数返回真实用户可无感通过的挑战。
- 高分数要求认证或对该身份临时限流。
- 记录并复核挑战,用数据调整阈值。
验证
- 合法用户可通过挑战继续访问。
- 高可疑流量被降速或要求更强证明。
- 误伤率可度量且在阈值调整前有基线。
- 不再对整段 IP 做无差别封禁。
注意事项
- 挑战增加延迟与复杂度,且无法完全抵挡有决心的自动化。
- 阈值过激时对合法用户的伤害大于能轮换的攻击者。
适用范围
本条目围绕「对疑似滥用发起挑战而非直接封禁」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
const score = await scoreRequest(req);
if (score > HARD) return requireAuth(res);
if (score > SOFT) return issueChallenge(res);
return next();