私はこのトピックが100万回議論されていることを知っています。しかし、それは私には新しく、実際に何が起こっているのか起こっているのか分かりません。パスワード、塩、ハッシュ、DB:百万回のため
ユーザーのパスワードのハッシュされた記憶域にユーザーの塩を追加するので、保存されたパスワードハッシュは次のようになります:hash(password + perusersalt)。 これにより、異なるユーザーの同じパスワードが異なる文字列としてDBに格納されます。クール。しかし、誰かがDBに侵入し、ハッシュされたパスワードを調べることに心配していません。私は、ユーザー名とパスワードの組み合わせについて私のサーバーに問い合わせるブルートフォースを心配しています。この場合、ユーザー名とパスワードを正しく組み合わせるとログインが成功するため、塩漬けされハッシュされたパスワードの記憶域は無駄になります。右?
私はこのシナリオで塩がかなり役に立たないという印象の下で正しいですか?サーバーはインターフェイス上のユーザー名とパスワードのみを受け入れるので(塩分は送信されません)、通常の辞書攻撃が有効です。
したがって、塩は、DBにアクセスできるユーザーからのパスワード(逆虹彩テーブルの参照のみで入手可能)を難読化するためにのみ存在します。うーん。
関連:私のWebアプリケーションではプレーンなパスワードも送信されません。パスワードはすでにクライアント側でハッシュされており、盗まれたパスワードに関する責任を完全に拒否するだけで、すべてがSSLを使用します。
ユーザ名とパスワードを正しく組み合わせると、ログインに成功する必要があるため、できるだけ高いセキュリティレベルが得られますか?
私の頭の中の混乱をクリアしていただきありがとうございます。
ウェブフロントエンドを制御する場合は、人為的に1分間に試行できるパスワードの量を制限し、いくつかの無効な試みを行った後にhotmailのような他のサイトが使用するキャプチャイメージを追加することができます。 – David
RDBMSソリューションによっては、方程式のWeb側を制御しなくても、通常はこれを制御できますが、新しいDBに切り替える場合は、移植性が悪い可能性があります。 –
また、bcryptを使用することもできます。これは、サーバーの速度にかかわらず、速度が遅くなり、速度が遅くなるように特別に設計されています。 –