首页/安全/漏洞与攻击面速查/登录爆破防护与限流
Web 漏洞原理与防护55 条

登录爆破防护与限流

登录接口是暴力破解与撞库的主要目标;防护组合为:失败限速与锁定、验证码或人机校验、异常登录检测(IP、设备、地域)与弱口令治理。

漏洞与攻击面速查安全更新于 2026-10-13

登录爆破防护是什么

爆破与撞库的目标都是登录接口:前者用字典穷举单个账号,后者用已泄露的账号口令组合批量尝试。防护不能只靠「口令要复杂」,而要在三个层次同时施加成本——账号层做失败限速与锁定,来源层做频率限制与封禁,业务层做人机校验与异常登录检测。此外注册与改密时比对已泄露口令库,能显著降低撞库成功率。设计时要注意误伤:限速策略过严会把正常用户的输入错误也变成锁定。

基本信息

风险类别OWASP Top 10 2021 A07 身份识别与认证失败;CWE-307
主要形态单账号口令穷举、多账号撞库、验证码接口与短信接口滥用
账号层控制失败计数、渐进延迟、短时锁定与解锁流程
来源层控制单 IP 与单设备频率限制、代理与代理池识别
业务层控制人机校验、异常登录检测、敏感操作二次验证
口令侧治理强度要求、泄露口令库比对、禁止跨系统复用
观测指标失败率突增、同源高频尝试、异地登录成功

典型场景

  • 后台管理登录页面暴露在公网,长期被自动化尝试
  • 移动端接口未做人机校验,脚本可高频调用
  • 短信与邮件验证码接口被滥用,造成费用损失
  • 员工账号在多个外部网站复用口令,被撞库命中
  • API 登录接口缺少频率限制,仅前端做了输入限制
  • 密码重置流程成为枚举账号与骚扰的入口

防护组合示例

防护组合示例
同一账号:连续失败 5 次 -> 渐进延迟或短时锁定(配合解锁流程)
同一 IP:单位时间失败阈值 -> 限速加验证码
全局:异常时段批量尝试触发告警
口令侧:强度要求 + 泄露口令库比对(注册与改密时)
# 提示信息统一:不区分账号是否存在,避免成为账号枚举工具
# 解锁流程要有人工或验证渠道,防止被恶意锁定

Nginx 限流配合

Nginx 限流配合
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;

location = /login {
    limit_req zone=login burst=3 nodelay;
    proxy_pass http://app;
}
# 应用层仍要独立做计数与锁定,网关限流无法识别分布式来源
# 记录来源 IP 与请求特征,便于事后分析与规则优化

控制层次与作用

层次手段作用
账号失败计数与锁定抬高单账号穷举成本
来源IP 与设备频率限制抬高批量尝试成本
业务人机校验与异常检测识别自动化与异常行为
口令强度与泄露库比对降低单次尝试成功率
监控失败率与成功异常告警及时发现正在进行的攻击
锁定策略要账号与 IP 结合:只锁账号可被用于定向骚扰,只锁 IP 容易被代理绕过。
关键系统叠加多因素认证后,即使口令被撞中,攻击者也难以完成登录,这是投入产出比最高的一项控制。

易错点

  • 验证码仅在失败后出现且可复用:自动化脚本触发一次失败取得验证码后继续尝试
  • 只在网关限流不在应用层计数:分布式来源可绕过单一 IP 限制
  • 错误提示区分账号是否存在:登录页变成账号枚举工具,为后续撞库提供输入
  • 锁定策略没有解锁渠道:攻击者可用错误口令把正常用户长期锁在外面
  • 忽略验证码与短信接口:这类接口被滥用会造成费用与信誉损失
  • 不监控成功登录的异常特征:少量但成功的异地或非常用设备登录最值得告警

数据来源与参考

  • OWASP Authentication Cheat Sheet
  • Nginx 官方文档(limit_req 模块)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌