質問: パスワードをサーバー側に送信する前にハッシュする必要がありますか? ほとんどのサイトがパスワードをプレーンテキストとしてhttps経由でサーバーに送信することに気付きました。その代わりにパスワードのハッシュをサーバーに送信した場合、利点はありますか?より安全ですか?
回答: いいえ、実際にはこれは脆弱性になります。攻撃者がデータベースからハッシュを取得できる場合、そのハッシュを使用して、クラッキングする必要なく認証できます。どのような状況でも、ユーザーまたは攻撃者がハッシュパスワードを取得することはできません。パスワードをハッシュすることの全体的なポイントは、セキュリティの層を追加することです。攻撃者がsqlインジェクションまたは安全でないバックアップを使用してデータベースからハッシュとソルトを取得できる場合、ブルートフォースでプレーンテキストを見つける必要があります。 john the ripper は、ソルトパスワードハッシュを解除するために一般的に使用されます。httpsを使用しないと、owaspトップ10に違反します。 a9-insufficient transport layer protection edit:実装でsha256(client_salt+plain_text_password)を計算してから、サーバー側で別のハッシュを計算する場合sha256(server_salt+client_hash)これは深刻な脆弱性ではありません。ただし、それでもリクエストを盗聴してリプレイする可能性があります。したがって、これは依然としてwasp a9の明らかな違反です。ただし、これはまだセキュリティ層としてメッセージダイジェストを利用しています。httpsのクライアント側の置き換えに私が見た最も近いものは、 javascriptのキー交換のdiffie-hellman です。ただし、これはアクティブなmitm攻撃を防ぐため、技術的にはowasp a9に違反します。コードの作成者は、これがhttpsに完全に置き換わるものではないことに同意しますが、何もないよりもクライアント側のハッシュシステムよりも優れています。