web-dev-qa-db-ja.com

サインイン/アップページの組み合わせは危険ですか、それらを改善するにはどうすればよいですか?

下の図のようなサインイン/アップページを組み合わせてコーディングしたいと思います。

enter image description here

私の同僚は、これによりスパマー/ハッカーが私たちのシステムに登録されているメールアドレスを確認できるようになり、これは悪いことだと言いました。

しかし、これはハッカーが通常のサインアップページで「このメールはすでに使用されている」と表示されている場合にメールアドレスを確認する方法と同じです。

私の同僚は正しいですか?私のデザインはもっと危険ですか?もしそうなら、なぜ、そしてどのようにそれを変更して、1ページのミニマリストUIを維持しながら、それでも安全なのでしょうか?

14
Richard

しかし、これはハッカーが通常のサインアップページで「このメールはすでに使用されている」と表示されている場合にチェックメールアドレスを取得する方法と同じです。

はい、あなたは正しいです、そしてあなたの同僚は間違っています。この問題は、サインアップページがサインインページと同じページにない場合にも発生します。

この問題の予防策は、2ページであるか1ページであるかに関係なく実装できます(たとえば、ユーザーがサインアップフィールドに何かを入力したときにキャプチャを表示して要求することができ、バックエンドでは明らかに評価できます)サインアップ時のブルートフォース攻撃を防ぐために、サインアップ時に-limitを使用しますが、サインインに対しては制限しません。

そうは言っても、デザインはかなり混乱しているようです。これもサインインページであることは明確ではありません。多くの人がフォームを正しく使用する方法がわからないため、誤って再度サインアップすることを期待します。

23
tim

私の質問に対するMichaelのコメントによって提案された answer に基づいて、ページを次のように再設計しました。

  • サインイン時にメールがデータベースに存在するかどうかを誰にも教えない
  • サインアップしている場合はメールが存在することを人々に伝えますが、自動攻撃を防ぐためにキャプチャが含まれています

悲しいことに、これにはユーザーによる追加のクリック(「サインアップ」ボタン)が必要ですが、それは世界の終わりではありません。

新しいデザイン:

enter image description here

10
Richard

フォームは次のように簡素化できると思います。

初期フォーム

enter image description here

シンプルなユーザー名とパスワード、2つのボタン-それが言うことを実行する「Sign In」と「Sign Up(I'm New)」

登録されていないメールアドレスでログインを試みた場合、またはユーザーが「サインアップ」をクリックした場合は、登録フォームを表示します

enter image description here

かなり簡単です...

登録されているメールアドレスでログインしようとしたが、パスワードが間違っていた場合

enter image description here

もう一度試すか、パスワードをリセットする機会を与えてください。同じメールアドレスで間違ったパスワードをX回以上入力しようとした場合、[パスワードのリセット]ボタンを表示するだけかもしれません。

不適切なパスワードが多すぎる-パスワードの強制リセット

enter image description here

1
Luke Stevenson