web-dev-qa-db-ja.com

ログイン時のインライン検証により、セキュリティリスクやセキュリティリスクが発生しますか?

ユーザーがログインフォームに自分のメールアドレスを入力するときに、メールがアカウントに関連付けられているかどうか inline を検証したいと思います。ここでの考え方は、問題のシステムでは、大部分のユーザーが散発的であり、以前にアカウントを作成したかどうかわからない場合があるということです。

しかし、私はこれを行うウェブサイトの例を見つけることができませんでした。私の理解では、セキュリティのベストプラクティスはログイン資格情報を個別に検証しないことです。理論的には、「メールが認識されない」または「間違ったパスワード」ではなく、「メールとパスワードが認識されない」と報告することになっています。

そうは言っても、多くの立派な世界クラスのウェブサイト( Googleは明らかな例ですdosign-upフォーム。これは、どの電子メールアドレスにアカウントが関連付けられているかを特定するのは非常に簡単であることを私に示唆しています。なぜログインフォームにもその情報を提供しないのですか?

だから、私の質問:

  • ログイン中にインライン検証を行う立派なWebサイトはありますか?
  • この検証を提供することに実際のセキュリティリスクはありますか?
  • この検証を提供することには知覚されたセキュリティリスクがありますか?
    • 私は通常、平均的なWebユーザーはフォーム検証のセキュリティへの影響についてあまり考えていないと想定していますが、現状から逸脱すると常にリスクが伴います。

(これはWebセキュリティとUXの間で交差するので、security.StackExchangeまたはStack Overflowがこの質問をするのに適しているかどうかを教えてください。)

7
Sam Blake

私の頭の上から考えることができる唯一の例はFacebookです。あなたと同じようなメールIDでFacebookでログインしようとすると、Facebookは自動的にログインしますが、ログインしようとしていると思われるIDを使用してログインします。 enter image description here

FacebookのCookieが保存されているシステムまたはIPアドレスでのみシステムで実行されるのではないかと思いますが、これを確認することはありません。

この検証を提供することには実際にセキュリティ上のリスクがありますか?

そうすれば、このシステムにアカウントを持つ有効な電子メールIDのリストを簡単に特定でき、スパムを含むいくつかの目的でこれらの電子メールIDを収集できる可能性があるためです。最悪の場合、これらの潜在的なユーザーのいずれかに不十分なパスワードがあると、システムに侵入する可能性があります。

この検証を提供することにより、認識されるセキュリティリスクはありますか?

私は間違っているかもしれませんが、調査によると、ユーザーが電子メールIDや名前などのよくある質問への回答に問題がない場合、インライン検証メッセージが表示されることに気付かないことがわかっています。これを引用するには Luke Wroblewskiによる記事

私たちのウェブフォームの前半では、人々が答えを知っている質問をしました:姓、名、電子メールアドレス、性別、国、郵便番号。フォームの後半では、最初は正しく答えることが難しい質問をしました。参加者にユーザー名(どのようにして何が利用可能であるかを知ることができるのか)とパスワード(厳密なフォーマット要件)を選択させました。フォームの前半と後半で異なる動作が観察されたのは当然のことです。

参加者の30〜50%だけがフォームの前半で検証メッセージ(図2)を見たのに対し、参加者の80〜100%は後半でメッセージを見ました。これはおそらく、フォームの前半で正解の確認を必要としない、または期待していないためです。これらの簡単な質問に対する回答に自信を持っているため、ほとんどの人は、表示された検証メッセージに注意を払いませんでした。

enter image description here

対照的に、フォームの後半では、参加者がより難しい質問(ユーザー名やパスワードなど)を完了すると、回答に自信がなくなり、確認を求める傾向が強くなりました。また、彼らはためらう可能性が高く、検証メッセージ(フォームの前半にすでに表示されているメッセージを含む)を見つける十分な機会が与えられました。以下の視線追跡の視線(図3)は、この動作を示しています。入力フィールドの右側にある検証メッセージは、フォームの後半では多くの視覚的な注意を引きましたが、前半では何もありませんでした。

また、この質問を確認することをお勧めします より多くの入力については、ユーザーのログイン情報を自動修正するのは良い考えですか?

3
Mervin

ログイン、登録、パスワードの取得/リセットのための完全なソリューションがあると思うので、前の回答を変更するのではなく、別の回答を追加することにしました。それほどユーザーフレンドリーではありませんが、登録済みのメールアカウントにアクセスできるユーザーのみが検証情報を確認できるため、安全です。

1:ログインフォーム

残念ながら、ログインの検証を忘れる必要があります(メールアドレスであるとしましょう)。ペアのみを検証:ペアが一致しない非常に禁欲的な情報を含むログインとパスワード。

ログインフォームの下に、3つのリンクを提供します。

  • アクセスを取得したい
  • 登録したい
  • アクセスできるかどうかわかりません

ログインに失敗した場合は、まず3つを強調し、最初にパスワードの取得とアクセスの確認を提案します。ログインしようとするユーザーは、少なくとも自分がアカウントを持っていると思っているので、別の幻のアカウントを作成するのではなく、そのアカウントに再びアクセスできるようにしたいと考えています。

2:登録

登録プロセスが不安定になるのは、メールフィールドの検証です。ただし、次のメカニズムを使用すると、ページに検証エラーが表示されないようにすることができます。メールメッセージで登録のプロセスを続行するためのリンクを受け取ることを通知するメールアドレスのみを提供するようにユーザーに依頼してください。これには確かにユーザーの努力が必要ですが、セキュリティ上の理由で正当化すると、登録プロセスを離れる人が多くなることはないと思います。

これにより、登録フォームがよりプライベートになります。データベースにユーザーが存在する場合は、この情報を登録済みの電子メールアドレスにも送信します。ユーザーがパスワードとパスワードのリンクを同時にリセットしたい場合は、親切な質問を提供します。

3:パスワードのリセット

メールアドレスのフィールドは1つだけ入力してください。ユーザーがそれを入力すると、電子メールメッセージの情報と適切なリセットリンクが表示されます。そのようなアカウントがない場合は、代わりにアカウント作成へのリンクを提供できます。

4:アカウントを持っているかどうかわからない

繰り返しになりますが、メールのフィールドは1つだけにしてください。送信したメッセージで、ユーザーはパスワードをリセットするためのリンク(そのようなユーザーが存在する場合)またはアカウント作成を再度取得します。

基本的に、3と4はほとんど同じですが、実際のユーザーのニーズをよりサポートするのはメッセージテキストのみです。ログインフォームの下のリンクについても同じです。ユーザーの認識が異なるため、3&4に個別のリンクを提供する必要があると思います。

私はそれがあなたの質問により良く答えることを望みます。前回の回答で申し訳ありません。質問を急いで読んだので、本当に失敗しました。したがって、100%の関連情報は提供しませんでした。したがって、2番目の答えです。

0
Dominik Oslizlo