
セキュリティ強化のため、ログイン時のユーザー名やパスワードの失敗に対する一般的な応答は常に「ユーザー名またはパスワードが間違っています」と返されるので、システムがユーザー名とパスワードの組み合わせをハッシュ化して保存しないのはなぜでしょうか。パスワードの長さなどに最大制限がある場合、どのメールを使用しているか分からず、他のメールを試さなければならないことほどイライラすることはありません。
答え1
私たちが本名を秘密にしないのと同じ理由です。本名は私たちを識別するのに使用され、意図的に共有可能になっているからです。
その目的は、既存のユーザー名で操作しているかどうかを共有しないことで、潜在的な攻撃者が持つ可能性のある情報を減らすことです。とはいえ、「ユーザー名またはパスワードが正しくありません」という形式のメッセージを使用するシステムは、通常、それらを使用しないシステムと同じくらい脆弱です。サインアップ フォーム (および場合によってはパスワード リセット フォーム) では、アカウントが存在するかどうかがわかるので、ユーザー名が存在するかどうかを識別するのは簡単です。そのため、このアプローチは、攻撃者を妨害するよりも、正当なユーザーを苛立たせる可能性があります。
また、プレーンテキストのユーザー名が保存されていないプラットフォームで友人を探そうとするとどうなるか想像してみてください。ユーザー名を一文字ずつ正確に入力しなければなりません。このようなシステムは非常に非実用的です。秘密のユーザー名を持つことは、2 つ目のパスワードを持つことと同じようなもので、アカウントを保護するにはそれよりはるかに優れた方法があります。