20

django-allauthのテストで、異なるソーシャルアカウントでログインおよびログアウトすると、それらはリンクされていないように見えます(socialaccount_set.all.0、socialaccount_set.all.1などを見てアクセスできないという点で) )。

誰かがソーシャルアカウントをリンクする方法を説明できますか?

私はこの投稿を見ました:django-allauthを使用して複数のソーシャル認証プロバイダーを同じdjangoユーザーに接続するにはどうすればよいですか?これは、最初に1つのソーシャルアカウントでログインし、次に他のアカウントを自分でリンクする責任をユーザーに負わせるようです。

確かに、ユーザーに負担をかけずにこれを行う方法があるはずですか?たぶんメールアドレスで?

既存のユーザーとの事後にこれを行う方法はありますか?

4

2 に答える 2

16

確かに、ユーザーに負担をかけずにこれを行う方法があるはずですか? もしかしてメールアドレスで?

これを行う方法には非常に注意してください。大きなセキュリティ ホールを開いている可能性があります。ユーザーに責任を負わせず、同じメール アドレスを持つアカウントを自動リンクするだけの場合、次の攻撃ベクトルが導入されます。

  • サイトでユーザーを見つけ、そのメールアドレスを見つけます (多くの場合、これは非常に簡単です)
  • 私の電子メールを使用して、プロバイダーのいずれかでアカウントを作成します
  • 電子メールを確認し、その電子メールを追加し、私のものを削除します (この穴が開くには、プロバイダの 1 つだけが完全なコーナー ケースを行わない必要があります)。
  • 私の新しいlax-providerアカウントであなたのサービスに「サインアップ」してください
  • 最初のユーザーに自動照合され、アカウントへのアクセスが取得されます

このリスクを軽減するための措置を講じることはできますが、すべてのプロバイダーが現在電子メールの確認を必要としている場合でも、サードパーティ チームで何らかのミスが発生すると、セキュリティにこの穴が開いてしまいます.

たぶん、あなたがやっていることにはリスクがありますが、気をつけてください。ユーザーに多少の負担がかかることは、おそらく最悪のことではありません。

自動一致を提案し、パスワードを要求するか、元のプロバイダーの 1 つで再認証して新しいアカウントを元のアカウントに追加するフローを見てきました。これらは同じように悪用される可能性はありませんが、いくつかの脳f*ckレベルのコーナーケースとUIの複雑さがあります.

于 2012-12-15T21:06:02.577 に答える