1

この質問から、解決するので@woliveirajrの答えが本当に好きです:

  1. Web サイトで使用されている電子メール アドレスの公開を防ぐ方法
  2. 電子メールアドレスの所有者を確認します

この種の漏洩を避けるために、電子メールを要求して登録プロセスを開始することもできます. 入力後、ユーザーが登録プロセスを続行できるように、リンクを含む電子メールを送信します。メールが登録済みの場合は、その旨を記載したメールを送信します。

そうすれば、電子メールの所有者だけが登録できます。

欠点:

  • おそらく、実際の一般的なユーザーは、登録するための手順が非常に多いことに飽きてしまうでしょう。
  • ほとんどの場合、電子メールがサイトに既に登録されていることを単純に明らかにするだけで問題になります。特に、必要な電子メールを提供するサイトに簡単に登録できるためです。アカウントをアクティブ化するための電子メールを受け取ることはありませんが、通常、サイトはアカウント/ユーザー名をその電子メールにリンクします。

ユーザーが電子メールのリンクをクリックした場合にのみ登録ページにアクセスできるようにするシステムを実装する方法は不明です。登録ページは GET を使用して渡されたデータを取得し、「コード」を検証して、ユーザーが登録できるかどうかを確認します。このコードは 30 分ごとに変更されますか? たとえば、電子メールで送信された登録リンクは「コード」である可能性がmysite.com/register.php?secretcode=as18dありますが、このコードは 30 分ごとに変更されます。これはアイデアですか?システム時間に基づいてソルトハッシュによってコードが生成されますか?register.phpas18d

または、電子メールの代わりに、ユーザーが認証のために登録ページに入力する数文字のリンクを電子メールで送信することもできます。

4

2 に答える 2

0

これに対する一般的なアプローチは、リンクに埋め込まれた GUID などの推測不可能なトークンを使用して、GET で送信されるようにすることです。これは、推測に費やした時間に関係なく、誰かが任意のユーザーの GUID をランダムに推測する可能性は統計的に非常に低いため、安全である必要があります。したがって、有効期限は実際には必要ありません。

中間者が検​​証プロセスを危険にさらす可能性を回避するために、SSL リンクを介してこれを行う必要があることに注意してください。

于 2013-07-22T19:53:55.120 に答える
0

HTTP 要求が電子メール メッセージ内のリンクからのものであることをサーバー側で保証する方法はありません。クライアント側からは何も信頼できません。それはすべてなりすましや操作が可能です。

必要なのは、推測しにくいトークンです。ロングとランダムは良い出発点です。

いくつかの理由から、有効期限について AJ に同意しません。

  • ユーザーデータベースが大きくなった場合、未使用のトークンを何年にもわたって追跡したくありません。
  • 誰かがアクティベーション トークンを要求し、数日経ってもそれを使用しない場合、使用する可能性はほとんどありません。取り外しても構いません。
于 2013-07-22T22:47:45.290 に答える