无需真实收件箱测试 OAuth 恢复邮件
以简单的方式测试 OAuth 恢复邮件会带来安全风险。许多团队将密码重置链接发送到一个共享邮箱。他们只需检查邮件是否到达,然后就结束了。这种方法很脆弱。它会掩盖令牌重用、错误用户投递以及敏感日志数据等问题。
为每次测试运行使用一次性电子邮件地址。隔离事件、检查它并删除数据。这可以防止混合测试数据导致结果难以验证。
一个好的威胁模型必须提出这些问题:
- 邮件是否送达了本次特定运行的目标收件箱?
- 链接或验证码是否在应过期时过期?
- 邮件主题是否泄露了过多的用户数据?
- 在发起新请求后,旧令牌是否仍然有效?
- 日志是否比必要时间更久地保留了恢复密钥?
最好的模式是每次测试执行使用一个收件箱。这能确保每个链接和时间戳都与单次运行绑定。
请遵循以下流程:
- 创建一个全新的用户 fixture 或沙盒身份。
- 将恢复邮件路由到针对单次运行的收件箱。
- 触发一次 OAuth 或密码恢复操作。
- 断言恰好收到一封匹配的邮件。
- 打开链接或验证码,以验证过期情况和单次使用行为。
- 立即销毁收件箱和 fixture 数据。
如果你的流程需要检查昨天的旧邮件,那么你的流程就是有问题的。恢复证明绝不应依赖于陈旧的数据。
发布前请检查以下几点:
- 收件人别名与测试身份相匹配。
- 该事件仅存在一条有效的恢复消息。
- 主题和预览不泄露敏感数据。
- 恢复 URL 指向正确的环境。
- 令牌在使用后或过期后失效。
- 重试行为不会留下多个处于激活状态的有效令牌。
避免这些常见的错误:
- 为多个测试用户重复使用同一个收件箱。
- 将恢复 URL 存储在长期保留的日志中。
- 在恢复邮件主题中包含完整的电子邮件地址。
- 在发起第二次请求后忘记使旧链接失效。
Staging 数据至关重要。它通常包含真实的姓名和配置。请使用安全的默认设置:短保留期、一次性密钥和显式清理。
来源:https://dev.to/sophiax99/how-to-test-oauth-recovery-emails-without-exposing-real-inboxes-hni
