web-dev-qa-db-ja.com

アカウントの確認を忘れた人を処理する最も安全な方法は?

新規のサブスクライバーに、アカウントを確認するためにリンクをクリックする必要があるという確認メールを送信するとします。

それを確認するのを忘れて、後でログインしようとしたとします。

エラーメッセージは、アカウントの確認を忘れたことを知らせるのではなく、「ユーザー名またはパスワードが間違っていますか?」.

これが最も安全な方法であると思います。アカウントを確認する必要があるとお客様に伝えた場合、そのユーザーIDのアカウントが存在することをお客様に通知します...

考え?

おそらくそれを処理する最良の方法は、アカウントへのアクセスを許可することですが、確認されるまで何もしないでください。

30
Ole

私が最もよく目にするのは、認証を許可してユーザーをサインインすることですが、メールが検証されるまで意味のある機能をロックします。制限された機能の1つにアクセスしようとした場合、アクティベーションメールを再送信するようユーザーに通知するエラーを表示する必要があります。

ユーザーにうそをつくことは設計上不十分です。ユーザーが正しいユーザー名とパスワードを送信した場合、どちらかが正しくないと主張するエラーを表示してはなりません。

80
Buffalo5ix

私はBuffalo5ixに同意しますが、電子メールの検証はアカウントのセキュリティの一部と見なされるべきではありません。メールの確認:

  • ユーザーが送信する正しいアドレスを入力したことを知るために、アドレスの所有権を証明します スパム パスワード再設定メール。
  • 複数の偽のアカウントを登録するための非常に軽い抑止力として機能します。電子メールアドレスの作成を自動化し(tempmailを使用するか、独自の電子メールサーバーをホストする)、検証リンクを自動的にクリックするのは簡単です。したがって、CAPTCHAは、偽のアカウントの自動登録から保護するための優れたシステムです。

未確認のアカウントを何らかの方法でロックする必要がある理由security-relatedがわかりません。 [明確化:私はnotは、未確認のメールアカウントにメッセージを送信する必要があると主張しています。これは、少なくともスパム行為であり、ユーザーがメールを誤って入力した場合、最悪の場合、ランダムな人物がアカウントのパスワードをリセットできるようにします。 アカウントのログインを無効にしてはいけない、メールを送信しない )未検証のアドレスへの送信は当然必要です。]

画面上部にある小さなバナーの方が、アカウントの確認と、確認メールの再送信を促すメッセージが表示されます。犯人容疑者のようにユーザーを扱うことや、登録直後にユーザーを悩ませることは丁寧ではないので、歓迎します。

8
Andrew Morozko

認証されていないログイン試行に対してユーザー名が存在するという情報を漏らしたくない。これにより、攻撃者はリストにあるメールアドレスのうち、サービスに存在するものを特定できます。

しかし、ユーザーが登録時に提供したパスワードを使用してログインする場合、それは現在の状況ではありません。ログインする人は、そのパスワードを登録した人と同じであることがわかります(これまでと同じように)。したがって、ユーザー名が存在することをユーザーに通知しても害はありません。彼らはそれを登録したので、彼らはそれを知っています!

あなたが知らないのは、この個人が実際に彼らのために持っている電子メールアドレスを管理しているということです。これは、パスワードでログインする人の身元を確認することとは実際には無関係です。 IDを証明するための代替手段として(パスワードの紛失から回復できるように)使用することをお勧めします。メールを確認していないと、安全にそれを行うことができません(あなたがしないでください登録した人がそのメールアドレスを制御していることを知っているため)。したがって、自分のアカウントの制御は安全に確立されません。ただし、パスワードが本人であることを証明したことを疑って、認証されていないユーザーとして扱う必要があるという意味ではありません。

ユーザーがメールを確認せずにログインしてサービスを使用できないようにすることが重要であると判断した場合は、通信相手の身元を確認したら、何が問題なのかを簡単に伝えて、許可する必要があります。それに対処します。

7
Ben

見落としている可能性があることを指摘したい

エラーメッセージは、アカウントの確認を忘れたことを知らせるのではなく、「ユーザー名またはパスワードが間違っていますか?」.

これが最も安全な方法だと思います。アカウントを確認する必要があるとお客様に伝えた場合、そのユーザーIDのアカウントが存在することをお客様に通知します...

認証情報を入力する必要がある場合でも、認証情報が正しい場合にのみメッセージを送信する限り、アカウントを確認してアクセスする必要があることを通知できます。特定のアカウントに関するメッセージを表示するには有効なパスワードを入力する必要があるため、この方法で情報を漏らすことはありません。

未確認のアカウントが確認されるまで実際にロックする必要があると本当に感じている場合、これはそれを処理する完全に優れた方法です(スパムなどで物事が失われるため、この画面の確認メールを再送信するオプションも提供します)。

1
taswyn

ユーザー名の重複を許可しないサインアップフォームがあると想定すると、ユーザー名が存在するかどうかを確認するのは簡単です。

0
Solomon Ucko

誰かが自分のものではないメールアドレスで登録した可能性があることに注意してください。メールが必須である場合は、次のいずれかを行う必要があります。

  • X日後に確認されないアカウントの自動削除。または、最初から完全なアカウントを作成せず、確認が完了するまで保留リストに入れておきます(このリストに同じアドレスの複数のエントリを許可します)。この自動削除は、メールの本文と登録ページにも記載されています。

  • または、アカウントを自動削除しない場合は、正当なメールの所有者が後で自分のアカウントを作成するための何らかの方法を提供する必要があります(その時点で、以前のアカウントを再度無効化/削除する必要があります)。

もちろん、メールが確認されるまで、アクセスを許可しないでください。また、確認が完了するまで、そのアドレスにメール(マーケティングなどを含む)を送信しないでください。

If電子メールはサービスのオプションです。そのことを明示し、電子メールを必須フィールドにしないでください。その場合、誰かが電子メールを入力しても検証しない場合は、電子メール関連の機能なしで続行できますが、同じ電子メールアドレスが正当な所有者によって後で再利用できることを確認してください。


他の誰かがあなたのメールアドレスでアカウントを登録すると、そのメールアドレスはデータベース内で一意であり、他のアカウント。メールの所有者がアカウントのパスワードを簡単にリセットできる場合でも、そのアカウントが他の誰かによってパーソナライズされているという事実には役立ちません。ユーザーをそのような立場に置かないでください。

0
Bob