Blog

Tips, guides, and privacy advice

← Back to Blog
開発者向けヒント

本物の受信トレイを使わずにパスワードリセットフローをテストする方法

2026年1月7日·6 min read

なぜパスワードリセットのテストが軽視されるのか

ほとんどの開発者は自分のメールアドレスでパスワードリセットフローを一度テストして終わりにします。5回目のテスト実行後には、受信トレイは同じように見える「パスワードをリセット」メッセージで埋め尽くされます。どのリンクがどの実行に属するかの追跡を失い、最終的には面倒くさくなって徹底的なテストをやめてしまいます。まさにその種の怠慢が深刻なバグを本番環境に侵入させます。

パスワードリセットフローで実際にテストする必要があること

単純な「メールを送信するか」というチェックは不十分です。OWASP Authentication Cheat Sheet は包括的な要件セットを詳細に説明しています:

  • メール配信 — リセットメールが届くか、また速やかに届くか
  • リンクの正確性 — メール内のリンクが正しいトークンで正しいページに誘導するか
  • トークンの有効期限 — 25時間後にリンクをクリックした場合、期限切れトークンが正しく拒否されるか
  • 一回限りの使用 — 同じリセットリンクを二度使用できるか(できてはいけない)
  • 新しいリクエスト時のトークン無効化 — ユーザーが再度リセットを要求した場合、最初のトークンが無効になるか
  • SSOアカウント — OAuthで登録したユーザーの場合はどうなるか
  • レート制限 — アドレスごとのリセットリクエスト数に制限があるか

一時メールのアプローチ — ステップバイステップ

最もクリーンな解決策は、各テスト実行に新鮮な一時的なメールアドレスを使用することです。一時受信トレイを開き、アドレスをコピーし、アプリケーションにテストアカウントを登録し、リセットをトリガーして、リアルタイムでメールの到着を確認します。リンクをクリックし、完全なフローを確認し、ログインが機能することを確認します。別のシナリオのためには、新しいブラウザタブを開くだけです。

テストメールアドレスをコードベースにハードコードしないでください。毎回新鮮な一時メール受信トレイを使用してください — 実際の配信をテストし、常にクリーンな状態から始めることができます。

トークンセキュリティチェックリスト

パスワードリセットトークンは一般的な攻撃面です。OWASP によれば、安全な実装は次の要件を満たす必要があります:

  • 少なくとも32文字、暗号学的にランダムに生成
  • 24時間以内、理想的には1時間以内に期限切れ
  • 一回限りの使用 — 換金後すぐに無効化
  • 新しいリセットが要求されたときに無効化
  • メールアドレスごとにレート制限
  • 平文でログに記録しない

リグレッションスイートにパスワードリセットを含める

パスワードリセットは認証ライブラリが更新されると静かに壊れます。少なくとも基本的なエンドツーエンドテストを追加してください:テストアカウントをプログラムで作成し、リセットをトリガーし、送信メールを傍受してトークンを確認します。MXToolbox でドメインの認証設定を確認し、実際のセキュリティ侵害についてTroy Hunt のブログを参照してください。