問題の仮定/条件:
foo@bar.com
システムに電子メール(未確認) を持つユーザーが存在します。- 訪問者はシステムにサインインしていません (新しいブラウザなど、現在のセッションがありません)。
- OAuth (ユーザー認証) を通じて、Google アカウントを使用して訪問者がサインアップ/ログインします。
- システムは、uid と
foo@bar.com
[Google によって確認された] メールを含むコールバックを受け取ります。
ここに 3 つのオプションがあります。
A. 電子メール foo@bar.com を使用して、訪問者を既存のアカウントにサインインさせます。これには、いくつかのセキュリティ上の影響があります。
B. パスワードを尋ねます [システムにパスワードがあると仮定します。これは、複数の OAuth プロバイダーには当てはまらない可能性があります]。有効な場合は、既存のアカウントにサインインします。
C. ログイン/サインアップを拒否し、メールは既に使用されていると言い、Google に接続する前にユーザーにログインを促します。
オプション #A にはどのようなセキュリティ リスクがありますか?
私が自分で思いついたこと:
「予測攻撃」が実行される可能性があります。この場合、攻撃者はサインアップを予測し、ターゲットよりも先にシステム上にアカウントを作成します。ターゲットが OAuth を使用してサインアップすると、そのアカウントでアクティブなセッションが行われます。#A を実行する前に、アカウントのすべてのセッションをクリアすると敗北します。