web-dev-qa-db-ja.com

電子メールアドレス確認リンクの有効期間はどれくらいですか。また、なぜそれが期限切れになるのですか。

ユーザーが登録すると、リンクが記載された電子メールが送信され、アカウントをクリックしてアクティブ化する必要があります。他のサイトでは、ユーザーがリンクをクリックしなければならない時間に制限があることを知っています。そうでない場合、リンクの有効期限が切れます。考えてみて、なぜこれが必要なのでしょうか。攻撃者が任意の大量のアカウントを生成し、それらへのアクティベーションリンクを推測する時間が無制限であるため、登録された電子メールを所有していないアカウントを作成するのを防ぐためですか?

必要な場合、ユーザーはリンクをクリックするまでにどのくらいの時間が必要ですか?

39
Celeritas

ほとんどのWebサイトでは、1つのアカウントに対してのみ電子メールアドレスを使用できます。これは、ほとんどの場合、ユーザーは1つのアカウントしか必要としないためです。したがって、一意の電子メールアドレスが必要です。

とは言っても、ユーザーが登録し、電子メールアドレスを確認するだけでよい場合は、データベースにユーザーの電子メールアドレスを挿入して、他の誰かまたはまったく同じ人が再度登録できないようにします。電子メールの確認の有効期限を処理しないと、誰かが他の人の電子メールアドレスに登録して確認することができず、正当なユーザーがあなたのWebサイトに登録したい場合に、その電子メールをロックしてしまう可能性があります。

ユーザーが所定の時間内に電子メールアドレスを確認しなかった場合は、実際に自分のアドレスではなかった場合、または後で再度登録したい場合に備えて、再度使用可能にする必要があります。ユーザーが間違った電子メールアドレスを誤って入力した場合を考えます。

さて、適切な期間、それはウェブサイトのタイプに依存すると私は言うでしょう。ユーザーがWebサイトに登録できた場合、ユーザーは自分の電子メールアドレスにすばやくアクセスできるはずなので、数時間以上許可しても意味がありません。ユーザーが自分の電子メールアドレスのパスワードを忘れてしまい、アクセスできない場合を考えてみましょう。彼はパスワードを取り戻すためにいくつかのステップを経る必要があるかもしれません。しかし、彼が再度登録しなければならない場合、それは本当に害を及ぼすでしょうか?もう一度、それはウェブサイトに依存します。

42
Simon

リソースの枯渇攻撃を平等に考えると、これらのリンクを期限切れにしなければならない理由はありません。

とはいえ、ユーザーの99%がどのようにサイトを使用し、そのために最適化するかについて考える必要があります。誰かが受信トレイで18か月前のアクティベーションリンクを見つけ、サイトを覚えていても、それが役立つとわかって、そのリンクをクリックすることはまれです。

永久に続くアクティベーションリンクまたはコードでは、それらを永久に維持する必要があります。 DBに多数の行が含まれる可能性がある人気のあるサイトがある場合。

これらのリンクを10日後に期限切れにして、「アカウントの作成」を再度クリックする必要がある場合の最悪のシナリオは何ですか?

ちなみに、ユーザーAが既に電子メールアドレスを(誤ってまたは悪意で)使用しているために、ユーザーBのアクティブ化をブロックすることは、非常に悪い体験です。誰が最初にそこに到達するかではなく、実際に電子メールアカウントを誰が所有するかが重要です。

8
u2702

これ 答え(+1)に同意します。元のメールが途中で失われたり、スパムフィルターによってブロックされたりする可能性があるため、ほとんどのサイトには「再送確認メール」機能が必要です。つまり、 最も投票された回答 とは異なり、確認メールを常に自分のアドレスに再送信できるため、誰も私のメールをロックアウトできません。したがって、検証リンクの有効期限が切れる唯一の本当の理由は、ストレージリソースです。未検証のアカウント(リンク)を削除して、ストレージが無制限に増大したり、速度が低下したりしないようにします。したがって、「有効期限が切れた」未確認のアカウントを削除するための賢明な方法が必要です(たとえば、最後の確認メールが送信されてから48時間後)。

6
Dmitry