web-dev-qa-db-ja.com

ログイン資格情報が間違っていることをユーザーに知らせる方法は?

ユーザーがログインフォームに誤った詳細を入力した場合は、次のように伝えてください。

  • 入力したユーザー名またはパスワードは無効です。

または

  • 入力したユーザー名は無効です(無効なユーザー名の場合)
  • 入力したパスワードは無効です(ユーザー名は有効ですが、パスワードが無効です)。

最初のアプローチは、攻撃者がユーザー名/電子メールアドレスが有効かどうかを確認できないため、より安全である可能性があります。同時に、ユーザーはサインアップしたメールアドレスまたはユーザー名を思い出せないことに不満を感じるかもしれません。

2番目のアプローチは明らかにユーザーフレンドリーですが、攻撃者は有効なユーザー名/メールが何であるかを突き止め、パスワードを推測する攻撃を仕掛けることができます。

いくつかの例:

  • アマゾン:There was an error with your E-Mail/Password combination. Please try again.
  • ホットメール: That Windows Live ID doesn't exist. Enter a different ID or get a new one.およびThat password is incorrect. Try again.

これらのエラーを表示するにはどうすればよいですか?

63
F21

あなたは最初のオプションを使用する必要があります(「ユーザー名またはパスワードが無効である」と述べています)、これはセキュリティとは何の関係もありません。

私は通常、ユーザー名としてJohnGBを使用していますが、サービスでは他のユーザーがそのユーザー名を持っているため、代わりにJohnGB123を使用するとします。ユーザー名を忘れてしまい、ユーザー名としてJohnGBを入力したが、正しいパスワードを使用したとします。

それは正しいパスワードと間違ったユーザー名ですか、それとも正しいユーザー名と間違ったパスワードですか?

一致するパスワードがないと正しいユーザー名があり、一致するユーザー名がないと正しいパスワードがないということはありません。 ユーザー名とパスワードは、組み合わせて使用​​する場合にのみ何かを表します

76
JohnGB

Securityの観点+ UXからアドバイスをします。私はどちらか一方を他方のために犠牲にするつもりはありません。両方持ってください。

  1. あなたの質問には安全な慣行の重要な質問があります。セキュリティの観点から見たベストプラクティスは、無効なエントリを特定せず、一般的な回答を得ることです。 Googleはどうするのかと聞いて、GoogleのGmailを例に考えてみましょう。enter image description here

  2. アカウントにアクセスできませんか?リンク、Gmailは最終的にこのアカウントが存在しないことを通知します:

enter image description here

これを行うかどうかは、最終的にはあなた次第です。セキュリティの観点から、攻撃者はアプリケーションで有効なユーザー名を収集し始めることができます。ユーザビリティの観点から、あなたは誰かが彼らの無数の電子メールアドレスをあなたのアカウントで使用し、より早くログインできるようにするのを手助けしたところです。

名前が存在するかどうかは誰にわかりますか?

  • ツイッター
  • ホットメール
  • Gmail

最も安全な方法は、「有効な電子メールアドレスが入力された場合、パスワードをリセットするための指示が送信された」ということをユーザーに伝えることです。

これはユーザー名を明らかにしません。したがって、最初のオプションは間違いなくより安全です。

使いやすさの観点から、アカウントに戻ろうとする複数の方法、(Twitter、Gmail、 Facebook ...そのためのAPIがあります)。

ログインフォームへの多くのアプローチをレビューするこのSmashing Magazineの記事をご覧ください:

http://uxdesign.smashingmagazine.com/2011/08/22/new-approaches-to-designing-login-forms/

要点:ユーザーは、使用したメールを思い出せないことに不満を感じるかもしれません。 uxがセキュリティを切り捨ててアカウントがハッキングされた場合、ユーザーはあなたに対するすべての信頼を失います。

これがお役に立てば幸いですErics、私はあなたが最終的にどの解決策を選択するのか知りたいです。

いくつかの技術的なセキュリティ関連事項:列挙とそれが引き起こす実際の危険性について詳しく知るには:

このOWASPチートシートからパスワードのセキュリティを忘れた場合の詳細を知ることも役立ちます: https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet

ビジネスアプリケーションのベストプラクティスを提供しますが、覚えておくと役立ちます。 http://www.gnucitizen.org/blog/username-enumeration-vulnerabilities/

34
mustefa

答えはいくつかの理由でシステムに強く依存します。たとえば、Johnが間違ったJohnにアクセスしようとしている可能性があると述べている場合など、適切なパスワードがないと、ユーザーが「正しい」ユーザー名を持っているかどうかを知ることができないという点で有効です。しかし、ユーザー名が存在することを教えてくれると役立つ場合がいくつかあります。

ユーザー名が存在しません:これをユーザーに知らせない、セキュリティ以外の理由はありません!この場合、あなたは実際にはユーザー名が間違っていることを知っていますであり、パスワードやユーザー名/パスワードの組み合わせではありません。ユーザーがボット/悪意のあるエージェントでない限り、存在しないアカウントにログインするためにユーザーが激しく離れてタイプ入力することを許可しても意味がありません。この場合も、ユーザーが実際にアカウントを持っていないため、アカウントを作成する必要がある場合に備えて、「登録しようとしていますか?ここをクリック...」のようなものを提供してください。

私のユーザー名/ログインは私の電子メールです:他の誰かが私の電子メールを盗んだのでない限り、ユーザーが自分の電子メールを正しく入力したと考えられ、混乱していないと思います。 BobやJohnのような名前がすぐに取得されるユーザー名システムとは異なり、電子メールベースのログインシステムでは、ウェル内でしかアクセスできないため、ユーザーの推奨ログイン資格情報は常に利用可能です電子メールを制御できる人だけがそのプロセスのアカウントの作成を完了することができるため、設計されたシステム。

私のログインはOpenIDです:上記と同じ理由。自分の資格情報にアクセスしないと、他の誰も私のログインを使用できませんでした。 OpenIDの登場と電子メールベースのログインの人気により、多くのユーザーは、ここでJohn453453としてサインアップしたか、John543553としてサインアップしたかを心配する必要がなくなりました。

そうは言っても、「パスワードが間違っています」というメッセージは役に立たないためにエラーになります。入力したユーザー名のパスワードが間違っているか、正しいかどうかだけでは、そのパスワードが間違っているか、ユーザーにとって正しいかどうかはわかりません。 3つのメッセージを持つシステムがおそらく最も役立ちます。
1:ログインに成功しました! (正しいパスワードとユーザー名)。
2:ユーザー名が存在しません!登録しようとしていますか? (ユーザー名が「正しくない」/存在する)
3:パスワード/ユーザー名が正しくありません。 (パスワードとユーザー名が一致していません。ほとんどの人はユーザー名ではなくパスワードを間違って入力するため、ここではパスワードが間違っていることを強調してください)

6
Ben Brocka

メンバーであることがペニス拡大サイトでユーザーが目立たないことを感謝するものでない限り、セキュリティは問題ではないと思います。オプション#2を選択するほとんどのサイトでは、電子メールでパスワードを回復し、データベースにそのようなユーザー名が存在しない場合は通知することができます...

ハッキングの観点からは、ユーザー名が存在することをシステムが応答する場合、それは実際には多くの利点を提供しません。合理的なシステムでは、とにかくあまり多くの試行を許可しないので、ハッカーが得ることができる最も多くは、彼がハッキングしようとしている有名なメール/ユーザー名の確認です。誰かが直接のターゲットである場合、そのユーザー名/メールはおそらくすでに知られています。

多くの人がすべてのウェブサイトで同じメールアドレスやユーザー名を使用しています。したがって、基本的に、これらのWebサイトの管理者はすでに、これをいわゆる機密情報と呼んでいます。強みはパスワードにあり、ユーザー名はないので、だれもそれで問題を抱えているようには見えません。

5
Assaf Lavie

セキュリティの問題が心配な場合は、間違ったユーザー名と間違ったパスワードを区別しないでください。

つまり、ログインページ以外に2つのフィールドがあり、そのうちの1つが間違っている場合、エラーメッセージが「これら2つのフィールドの1つが間違っていますが、どちらを表示するかはわかりません。 1。"ユーザー名とパスワードはペアで検証する必要がありますが、パスワードフィールドは通常、入力内容を確認できないように構成されているため、ユーザー名よりもパスワードが間違っている可能性が高くなります。

5
user246

両方を使用:最初の試行の最初のオプション。5回連続して失敗した後、2番目のオプションに切り替えます。

このようにして、大多数のユーザーの使いやすさを維持しますが、ハッカーの作業をはるかに困難にします。5回失敗した後、彼はCookieをリセットしてIPを変更するか、5つの暫定のみで正しい資格情報を見つける必要があります(非常にありそうもない)。この段階では、ほとんどの「攻撃者」はあきらめ、彼が決定し、十分に熟練していれば、とにかくブルートフォース戦略を破棄するでしょう。

5
Knu

JohnGBに同意します。

「ユーザー名またはパスワードが間違っています」と表示するサイトに不満を感じることがよくあります。しかし、上記のJohnGBの答えは理にかなっています。

私の主な不満の1つを追加するだけで、電子メールとユーザー名は区別されないことが多いという事実に由来します。たとえば、私のメールまたはユーザー名を要求するサイトですが、突然多くのオプションが開かれます。登録プロセス全体で用語が変わることもあります。

具体的で一貫している。ログインとしてメールを要求する場合は、必ずメールとして参照してください。およびその逆。

3
Sheff

私たちのサイトで使用する最適なオプションについても同様の議論がありました。最終的には、サイトの性質とユーザーに提供したいセキュリティのレベルによって異なります。ユーザーのために追加のセキュリティレイヤーが必要だったため、私たちは仕事場を運営し、最終的にはアマゾンのアプローチを採用することを求めました。

1
dg3a