← 返回题目列表

暴力破解和撞库有什么区别?登录接口如何防护?

高频 中等 第 3 / 27 题 更新于 2026/07/31
暴力破解撞库登录安全限流

简化版

暴力破解是不断猜同一账号或密码,撞库是使用泄露的账号密码组合批量尝试登录。登录接口防护要分层:限流、失败次数控制、验证码或 MFA、密码策略、异常设备/IP 风控、泄露密码检测、日志审计和告警。

详细版

暴力破解通常表现为单账号多密码或单密码扫多账号;撞库依赖其他网站泄露的真实凭证,成功率往往更高。防护不能只靠验证码,因为验证码会影响体验且可被绕过。

生产中常按账号、IP、设备、网段、ASN、接口维度限流;连续失败后逐步增加等待时间;高风险登录触发 MFA;对成功但异常的登录也要告警。密码存储必须使用 bcrypt、Argon2 等慢哈希,避免数据库泄露后被离线快速破解。

完整版教学

一、暴力破解和撞库的区别

暴力破解是“猜”,撞库是“拿泄露数据试”。前者可能对一个账号尝试 10000 个密码,后者可能拿 100 万组邮箱密码组合批量登录。

暴力破解: alice + password1/password2/password3...
撞库: leaked_email + leaked_password

撞库更贴近真实攻击,因为很多用户会在多个网站复用密码。攻击者不需要猜,只要批量验证。

记忆钩子:暴力破解是攻击者替用户猜密码,撞库是攻击者拿别处泄露的密码来验证你这里能不能登录。

二、为什么只按 IP 限流不够

攻击者可以使用代理池,让每个 IP 请求很少。如果只按 IP 限流,就会漏掉分布式撞库。反过来,如果只按账号限流,攻击者可以扫大量账号。

限流维度能挡住挡不住
IP单 IP 爆破代理池
账号单账号爆破大量账号扫描
设备指纹同设备攻击指纹伪造
网段/ASN大规模来源误伤风险

登录安全要组合多个维度,并按风险动态调整。

三、失败次数和退避策略

连续失败后可以逐步增加等待时间,而不是立刻永久锁号。永久锁号容易被攻击者用来拒绝服务:故意输错别人的密码,让别人无法登录。

失败 1-3 次: 正常提示
失败 4-6 次: 需要验证码
失败 7+ 次: 延迟 5/30/300 秒
高风险: MFA 或人工验证

数字只是示例,真实阈值要根据业务量和误伤率调优。

四、验证码和 MFA 的位置

验证码适合在人机风险较高时出现,不适合每次登录都强制。MFA 适合账号风险高、设备陌生、地区异常、密码刚修改后等场景。

低风险: 密码登录
中风险: 验证码
高风险: MFA / 邮件确认 / 短信确认

安全策略要兼顾攻击成本和用户体验。把所有人都拦得很重,用户会流失;完全不拦,攻击成本太低。

五、密码存储和离线破解

登录接口防爆破是在线防护,密码哈希是数据库泄露后的离线防护。密码不能用普通 MD5/SHA1,要用带盐的慢哈希,如 bcrypt、scrypt、Argon2。

fast hash: 1,000,000,000 guesses/sec
slow hash: much fewer guesses/sec

慢哈希的目标是提高每次猜密码成本。即使攻击者拿到哈希,也不能高速撞出大量弱密码。

六、监控和响应

登录安全必须有可观测性。要记录失败次数、来源 IP、设备、User-Agent、账号、地区变化、成功后的敏感操作等。发现撞库时,可能需要临时提高风控、强制重置高风险账号密码、通知用户。

many accounts + same password pattern -> spraying
one account + many passwords -> brute force
many leaked pairs + distributed IPs -> credential stuffing

没有日志和指标,只靠用户反馈,往往已经晚了。

七、提示文案和枚举风险

登录失败提示也会影响安全。如果提示“用户不存在”和“密码错误”区分过细,攻击者可以先枚举有效账号。更稳妥的是对外返回统一提示,对内日志记录真实原因。

user-facing: 账号或密码错误
server log: user_not_found / wrong_password / locked / mfa_required

注册、找回密码、短信验证码接口也要防枚举。安全文案要让正常用户能理解,又不能给攻击者提供过多信号。

八、和业务风控结合

登录安全不是孤立接口。一次登录成功后,如果马上修改邮箱、提现、导出数据,也可能是账号接管行为。高风险操作应结合登录时间、设备、IP、地理位置和历史行为判断。

new device + foreign IP + password changed + withdraw
=> step-up authentication

这类策略比单纯“密码正确就放行”更适合真实业务系统。

九、常见误区与追问

  • 误区:验证码能解决所有爆破。 验证码可被打码平台、自动化和低频分布式攻击绕过。
  • 误区:锁账号越快越安全。 攻击者可利用锁号制造拒绝服务。
  • 误区:只按 IP 限流就够。 代理池和分布式撞库会绕过单一 IP 维度。
  • 追问:撞库和密码喷洒有什么区别? 撞库用泄露组合,密码喷洒用少量常见密码扫大量账号。
  • 追问:为什么需要 MFA? 密码泄露时仍需要第二因素降低接管风险。
  • 追问:如何降低误伤? 多维度评分、渐进式挑战、白名单和人工申诉。
  • 追问:数据库泄露后如何补救? 强制重置高风险密码、撤销会话、通知用户、分析访问日志。

十、加强记忆

登录接口防护要按“在线攻击 + 离线泄露”两条线记。在线侧用多维限流、退避、验证码、MFA 和风控识别爆破与撞库;离线侧用慢哈希和盐保护密码库。不要迷信单点措施,真正有效的是让攻击者每一步成本都上升,同时让正常用户尽量少受影响。