Blog

Tips, guides, and privacy advice

← Back to Blog
开发者技巧

如何在不使用真实收件箱的情况下测试密码重置流程

2026年1月7日·6 min read

为什么密码重置测试被忽视

大多数开发者用自己的电子邮件地址测试密码重置流程一次,就认为完成了。在第五次测试运行后,收件箱里堆满了看起来完全相同的"重置密码"消息。你会失去对哪个链接属于哪次运行的追踪,最终因为太烦人而停止彻底测试。正是这种自满让严重的漏洞溜进生产环境。

你实际需要测试密码重置流程中的什么

简单的"是否发送了邮件"检查远远不够。OWASP Authentication Cheat Sheet 详细描述了一套全面的要求:

  • 邮件投递 — 重置邮件是否到达,是否及时?
  • 链接正确性 — 邮件中的链接是否指向带有正确令牌的正确页面?
  • 令牌过期 — 25小时后点击链接,过期令牌是否被正确拒绝?
  • 一次性使用 — 同一重置链接能否使用两次?(不应该能)
  • 新请求时使令牌失效 — 用户再次请求重置时,第一个令牌是否失效?
  • SSO账户 — 通过OAuth注册的用户会发生什么?
  • 速率限制 — 每个地址的重置请求是否有限制?

临时邮件方法 — 步骤详解

最干净的解决方案是为每次测试运行使用全新的临时电子邮件地址。打开临时收件箱,复制地址,在应用程序中注册测试账户,触发重置,并实时观察邮件到达。点击链接,验证完整流程,确认登录有效。对于另一个场景,只需打开新的浏览器标签页即可。

永远不要在代码库中硬编码测试邮件地址。每次使用新鲜的临时邮件收件箱 — 确保测试真实投递并始终从干净状态开始。

令牌安全检查清单

密码重置令牌是常见的攻击面。根据OWASP,安全实现必须满足:

  • 至少32个字符,使用密码学安全随机数生成
  • 在24小时内过期,理想情况下1小时内
  • 一次性使用 — 兑换后立即失效
  • 请求新重置时失效
  • 按电子邮件地址进行速率限制
  • 从不以明文记录

将密码重置纳入回归测试套件

认证库更新时密码重置会悄然损坏。至少添加一个基本的端到端测试:以编程方式创建测试账户,触发重置,拦截外发邮件并验证令牌。使用MXToolbox检查域名的认证配置,并查阅Troy Hunt的博客获取真实安全漏洞的深入见解。