登录活动、促销开场或集中办公时段,认证接口往往比普通页面更容易成为攻击目标。请求者不一定需要制造极高带宽流量,只要反复触发密码校验、验证码生成、短信发送或会话创建,就可能消耗应用线程、数据库连接和第三方服务额度。因此,CC攻击防御的重点不是简单封掉某个来源,而是限制高成本操作,并为正常用户保留稳定通道。
一、在边缘层设置分级速率限制
第一种思路是把明显的突发请求挡在应用服务器之前。负载均衡器、反向代理或具备规则能力的安全网关,都可以按照来源地址、登录账号、设备标识和接口路径分别计数。
- 先区分登录页、提交凭证、发送短信、刷新令牌等路径,不要把所有请求放进同一个计数器。
- 对登录提交设置较短时间窗口,对短信发送和找回密码设置更严格的长期窗口。
- 达到第一档阈值时延迟响应或要求验证,继续异常时再临时拒绝,而不是直接永久封禁。
- 为企业出口、健康检查和已确认的合作系统设置明确的例外条件,并记录例外规则的有效期。
这种方式响应快、成本低,适合应对突发请求洪峰;但共享出口会让许多正常用户共用一个来源地址,单独按地址限速容易误伤,所以应结合账号和设备维度判断。它是基础的速率限制措施,也是CC攻击防御中最先应落地的一层。
二、采用逐级验证,而不是一次性启用验证码
所有用户同时弹出验证码,会增加登录高峰期的摩擦,也可能进一步放大验证码服务压力。更稳妥的做法是建立风险分级。
建议的三档处理
- 低风险:请求频率正常、设备行为稳定且登录成功率合理时,继续使用普通登录流程。
- 中风险:出现连续失败、短时间切换多个账号或请求节奏异常时,增加图形验证、行为校验或短暂等待。
- 高风险:同一设备批量尝试账号、请求参数异常或持续触发拦截规则时,暂停认证并要求重新建立可信会话。
验证码不是万能防线。配置时要限制验证码生成频率、设置有效期,并避免在验证失败后无限重试。对于登录风控,关键是让验证成本随着风险升高而增加,而不是让所有访问者承担同样成本。
三、把账号、会话与令牌生命周期管起来
有些攻击并不集中在密码校验,而是大量创建无效会话、反复刷新令牌或并发占用登录状态。此时,单纯限制请求次数并不足够。

- 为单个账号设置并发登录数或活跃会话上限,超过范围后要求旧会话失效或重新验证。
- 缩短未完成登录流程的会话保留时间,避免大量半成品会话长期占用缓存和连接资源。
- 令牌刷新应绑定原会话、设备或一次性状态,拒绝重复使用已经消费的刷新凭证。
- 对连续失败的账号采用递增等待,例如从数秒逐步延长到数分钟,成功登录后再按策略恢复。
这类配置适合账号枚举、撞库和会话滥用场景。它能保护认证状态,但需要注意多设备办公、移动网络变化等正常情况,不能把一次地址变化直接判定为攻击。
四、隔离高成本认证资源
登录接口常常会调用数据库、缓存、短信网关和日志系统。若这些依赖与普通业务共用同一连接池,攻击者即使没有打满带宽,也可能拖慢整个站点。
可执行的做法包括:为认证服务设置独立的工作进程或服务实例;为登录查询配置独立的数据库连接池;限制单个请求占用的超时时间;把验证码图片、静态脚本等可缓存内容交由边缘节点处理;对短信和邮件发送建立异步队列,避免请求线程同步等待外部服务。
隔离后的优点是故障边界清晰,即使认证流量异常,商品浏览或内容查询仍有机会保持可用。缺点是部署和运维复杂度更高,需要同步监测认证服务、缓存和数据库之间的容量关系。
五、用监控指标驱动动态策略
没有监控反馈的规则很难长期有效。登录高峰期至少应同时观察认证请求量、失败率、来源分布、平均响应时间、应用线程使用率、数据库连接池占用率和短信发送队列长度。
| 观察信号 | 可能问题 | 可采取的动作 |
|---|---|---|
| 请求量升高但成功率下降 | 凭证攻击或验证流程异常 | 收紧失败计数和分级验证 |
| 响应时间升高、连接池接近上限 | 后端资源被认证请求挤占 | 降低并发、缩短超时并启用隔离实例 |
| 单一设备或账号组合异常集中 | 自动化批量尝试 | 临时提高验证等级并限制会话创建 |
| 短信队列持续堆积 | 发送接口被滥用 | 收紧发送间隔和账号、设备维度配额 |
策略调整应保留审计记录,注明触发条件、影响范围和回滚方式。上线前可在预发布环境模拟正常用户连续登录、密码输错、网络切换和多设备登录,确认规则不会阻断基本流程。
常见问题
1. 只限制来源地址可以吗?
不建议。移动网络、校园网和企业出口可能共享地址,应结合账号、设备、路径和失败行为判断。
2. 验证码越严格越安全吗?
不一定。过度依赖验证码会影响正常用户,也可能增加外部服务依赖,应采用按风险递进的验证。
3. 登录高峰期应优先扩容还是限流?
两者都需要。扩容解决合理流量,限流和隔离防止异常请求耗尽资源,单独扩容不能替代CC攻击防御。
4. 如何判断规则是否误伤?
对比成功率、验证通过率、地区和网络类型分布,并观察被拦截请求是否集中在真实用户常用路径。
总体来看,稳定的CC攻击防御应由边缘限速、风险验证、会话治理、资源隔离和监控联动共同完成。先保护高成本登录动作,再逐步优化阈值,通常比一次性设置全站封禁更安全。


