マジックリンクの失敗は、メール配信が成功した後に発生する可能性があります。メッセージは期限切れ後に到着する可能性があり、アプリケーションが以前のリンクを無効にするか、リダイレクトが間違った環境に到達する可能性があります。失敗したサインインをすべて認証レコードの問題として扱うのではなく、これらを個別の仮説として調査します。
二人の旅をたどる
The mail journey runs from request through generation, queueing and receiving-server acceptance.アプリケーションのプロセスは、トークンの作成からリンク要求、検証、セッションの確立まで続きます。非秘密の相関識別子を使用してそれらを結合します。 Do not log complete bearer links or paste a live link into an external scanner.
An SMTP acceptance event is evidence about transfer responsibility, not a completed user session.サポートラベルを正確に保ちます。 RFC 5321。 Record missing visibility explicitly when the provider exposes only submission and final status.
OWASP ロギング ガイダンス supports correlation without exposing access secrets.
リンク設計を個別に検証する
OWASP のパスワード リセット ガイダンスのセキュリティ原則には、使い捨ての有効期限付きトークン、信頼できる HTTPS 宛先、トークン漏洩に対する保護が含まれます。これらの原則は、電子メールで送信された機密リンクのレビューに関連していますが、ソースはパスワードなしのログインの完全な仕様ではなく、パスワードのリセットに関するものです。マジックリンク製品には、独自の脅威モデルとセッション制御が必要です。 OWASP リセット トークンのガイダンス.
Inspect the intended host, environment, path and redirect behavior using disposable test credentials in an approved test environment. Confirm whether a newer request invalidates previous links and whether successful use invalidates the token.すべての製品が同じように動作すると仮定するのではなく、実際のポリシーを記録してください。
Compare an expiry failure and a consumption failure
UTC 09:00 に作成され、有効期限が 09:10 である 2 つの仮想トークンを考えてみましょう。ケース A は、有効期限をすでに 1 分超えている 09:11 に受信者の受け入れに達します。ケース B は 09:01 にその段階に到達し、09:02 にアプリケーション引き換えの成功が記録され、09:03 に 2 回目の試行を受け取ります。使い捨てポリシーでは、残り 7 分であっても、B の 2 回目の試行はすでに使用されているため失敗するはずです。
これらはでっち上げられたイベントの仮定であり、ステートマシンの実行や検証されたインシデントではありません。ケース A はタイミングの調査を提案します。ケース B では、以前のアプリケーション移行に関する証拠が必要です。メール遅延が短くなると、B は再利用可能になりません。ユーザー エージェント文字列のみからセキュリティ スキャナーや個人に早期アクションを割り当てないでください。アクターの属性を特定する前に、承認された編集済みリクエスト レコード、状態変更、およびセッション イベントを関連付けます。
リンクを再利用可能にせずに修復する
本物の遅延の場合は、遅い段階に対処し、残りの有効性バジェットを確認します。時期尚早に使用する場合は、アプリケーションが無害なランディング要求を、セッションを確立する明示的で安全に検証されたアクションから分離できるかどうかを確認してください。これは設計のレビューであり、普遍的なパッチではありません。リプレイ防止、有効期限、その他の必要な制御を保持します。
承認されたテンプレート設定を通じて機密性の高いアカウント リンクから不要なマーケティング トラッキングを削除し、最終メッセージを確認します。リダイレクトまたはモバイルのディープリンクの動作には引き続きテストが必要です。期限切れのトークンを無期限に受け入れて断続的な障害を解決しないでください。
到着の遅延、リクエストの繰り返し、リプレイ、間違った環境でのルーティングがないか、制御された移動を再テストします。正確な失敗クラスと残りのギャップを閉じます。明確な分類により、メールオペレーターやアプリケーションエンジニアが間違ったシステムを繰り返し変更することを防ぎます。
Require a separate closure for each failure class
より早く到着した場合、有効期限遅延のケースをクローズできるのは、制御された移動によって予算の有効性が確認された後でのみです。以前の使用または間違った環境のケースを解決することはできません。原因を割り当てる前に、アプリケーションの移行と不足している証拠をサポートするクラスを記録します。