登录爆破防护是什么
爆破与撞库的目标都是登录接口:前者用字典穷举单个账号,后者用已泄露的账号口令组合批量尝试。防护不能只靠「口令要复杂」,而要在三个层次同时施加成本——账号层做失败限速与锁定,来源层做频率限制与封禁,业务层做人机校验与异常登录检测。此外注册与改密时比对已泄露口令库,能显著降低撞库成功率。设计时要注意误伤:限速策略过严会把正常用户的输入错误也变成锁定。
基本信息
| 风险类别 | 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 容易被代理绕过。
关键系统叠加多因素认证后,即使口令被撞中,攻击者也难以完成登录,这是投入产出比最高的一项控制。