
防止 credential stuffing(撞库)攻击,关键不在密码够不够“强”,而在于不让同一组凭据跨平台生效。攻击者手握的是真实泄露的账号密码,不是靠猜——所以单靠复杂密码无法防御,必须打破“一处泄露、处处失守”的链条。
强制启用多因素认证(MFA)
MFA 是当前最直接有效的防线。即使密码已被撞中,没有第二因子(如 TOTP 动态码、硬件密钥或生物验证),登录仍会被拦截。
- 优先选用基于时间的一次性密码(TOTP)或 FIDO2 安全密钥,避免仅依赖短信验证码(易受 SIM 交换攻击)
- 对管理员、财务、客服等高权限账户,设置为强制 MFA,不可跳过
- 在用户首次登录或更换设备时,主动引导完成 MFA 绑定,而非仅提供“可选”开关
部署智能登录风控机制
单纯限制失败次数容易误伤正常用户,也挡不住分布式、低频慢速的撞库尝试。需结合行为与上下文做实时判断。
- 监控异常登录特征:短时间大量不同账号来自同一 IP 或 ASN;登录时间/地理位置突变(如上一秒在东京,下一秒在圣保罗)
- 对高频失败请求自动触发 CAPTCHA 或延迟响应,不暴露“用户名是否存在”等提示信息
- 使用设备指纹+行为画像识别自动化工具流量,例如鼠标轨迹僵直、表单提交毫秒级精准、无 JS 渲染交互等
切断凭据复用链条
用户习惯是撞库成立的前提。系统层面要从源头降低复用动机和可行性。
- 注册/改密时,调用 HaveIBeenPwned 或本地泄露凭据哈希比对服务,禁止用户设置已被公开泄露的密码
- 不存储明文密码,采用 Argon2 或 bcrypt 等抗 GPU 暴力破解的哈希算法,并加盐处理
- 提供一键密码刷新功能,当检测到某邮箱在大规模泄露事件中出现时,向关联账户推送重置提醒
定期审计与凭证清理
很多撞库成功,源于长期沉睡的僵尸账户或第三方集成遗留的弱凭据。
- 每季度扫描未登录超90天的账户,要求重新验证或冻结;对 API Key、Webhook Token 等非交互式凭据,强制设置有效期(如30–90天)
- 禁用已废弃的旧认证方式(如仅支持 Basic Auth 的接口)、关闭未使用的 SSO 连接器
- 对所有管理员账户执行凭据健康度检查:是否开启 MFA、是否使用唯一强密码、是否绑定可信设备











