无需真实收件箱测试 OAuth 恢复邮件

以简单的方式测试 OAuth 恢复邮件会带来安全风险。许多团队将密码重置链接发送到一个共享邮箱。他们只需检查邮件是否到达,然后就结束了。这种方法很脆弱。它会掩盖令牌重用、错误用户投递以及敏感日志数据等问题。

为每次测试运行使用一次性电子邮件地址。隔离事件、检查它并删除数据。这可以防止混合测试数据导致结果难以验证。

一个好的威胁模型必须提出这些问题:

  • 邮件是否送达了本次特定运行的目标收件箱?
  • 链接或验证码是否在应过期时过期?
  • 邮件主题是否泄露了过多的用户数据?
  • 在发起新请求后,旧令牌是否仍然有效?
  • 日志是否比必要时间更久地保留了恢复密钥?

最好的模式是每次测试执行使用一个收件箱。这能确保每个链接和时间戳都与单次运行绑定。

请遵循以下流程:

  • 创建一个全新的用户 fixture 或沙盒身份。
  • 将恢复邮件路由到针对单次运行的收件箱。
  • 触发一次 OAuth 或密码恢复操作。
  • 断言恰好收到一封匹配的邮件。
  • 打开链接或验证码,以验证过期情况和单次使用行为。
  • 立即销毁收件箱和 fixture 数据。

如果你的流程需要检查昨天的旧邮件,那么你的流程就是有问题的。恢复证明绝不应依赖于陈旧的数据。

发布前请检查以下几点:

  • 收件人别名与测试身份相匹配。
  • 该事件仅存在一条有效的恢复消息。
  • 主题和预览不泄露敏感数据。
  • 恢复 URL 指向正确的环境。
  • 令牌在使用后或过期后失效。
  • 重试行为不会留下多个处于激活状态的有效令牌。

避免这些常见的错误:

  • 为多个测试用户重复使用同一个收件箱。
  • 将恢复 URL 存储在长期保留的日志中。
  • 在恢复邮件主题中包含完整的电子邮件地址。
  • 在发起第二次请求后忘记使旧链接失效。

Staging 数据至关重要。它通常包含真实的姓名和配置。请使用安全的默认设置:短保留期、一次性密钥和显式清理。

来源:https://dev.to/sophiax99/how-to-test-oauth-recovery-emails-without-exposing-real-inboxes-hni