クライアントブラウザでユーザーパスワードをハッシュしてWebサーバーに送信する最善の方法は、プレーンテキストパスワードではなく、ハッシュのみが出力されるようにすることです。クライアントブラウザでのパスワードハッシュ
EDIT:HTTPを使用していると仮定すると(ないHTTPS)
クライアントブラウザでユーザーパスワードをハッシュしてWebサーバーに送信する最善の方法は、プレーンテキストパスワードではなく、ハッシュのみが出力されるようにすることです。クライアントブラウザでのパスワードハッシュ
EDIT:HTTPを使用していると仮定すると(ないHTTPS)
使用ハッシュを計算するためのJavaScript。 JSでSHA-1ハッシュを計算する方法の例については、thisを参照してください。
自分自身をJavascriptに依存させると、JSが無効になるとすぐにシステムが機能しなくなることに注意してください。 HTTPSを使用する必要がある場合は、独自の問題があります(ブラウザですぐに受け入れられるようにするには、証明書にはお金がかかります)。
ブラウザでJavaScriptが有効になっているわけではありません。プレーンテキストのチャンネルにハッシュを送る考えは十分に安全ではないと思います。
SSLセキュリティで保護された接続を検討することをお勧めします。
これを試してみるjQuery encryption plugin好奇心の念から、SSL/HTTPSの使用とサーバー側での暗号化で何が問題になっていますか?
私はプレーンなHTTPの作業を想定しています – Andy
このサイトは非常に包括的ハッシュ/暗号のものがあります:JavaScript Encryption Library
のJavaScript側jQueryの暗号化ライブラリーのような暗号化は、盗聴者を停止します。しかし、MITM(Man-in-the-Middle)は引き続き発生する可能性があります。 SSL/TLSは、共有ホスティング(専用IPなし)やサイトで大量のトラフィックを受信しているだけで、すべての接続(JS、CSS、HTMLなど)を単純に暗号化できない限り、 )。
なぜこれをやってもらえませんか?効果的に、パスワードハッシュはパスワードになり、ハッシュを傍受する中間者がそれを使用して認証し、ユーザーとして何らかのアクションを実行することができます。一方、中間者を信じていない場合は、単にパスワード自体を送信しないでください。
なぜパスワードをハッシュするのですか?ハッシュが得られれば、使用するのが難しいです。
システムのハッシュが公開されている場合、このモデルではどうなりますか?攻撃者は単にそれらをサーバーに送信し、ユーザーとして認証します。
これは、パスワードのハッシュがクライアントではなくサーバー上で常に発生する理由です。
安全なチャンネルでハッシュを送信する予定がある場合、またはチャレンジ/レスポンスメカニズムの一部であることをお祈りします。そうでなければ、これはプレーンテキストでパスワード自体を送信するよりも安全です... –
@Roger Lipscombe、このメソッドは、実際にはユーザーのためのわずかな改善かもしれません。セキュリティで保護されたチャネルがない場合でも(SSLのみが動作し、JSの代替手段は無防備です)、少なくともハッシュはサイト固有のものになります。もちろん、ハッシュをユニークにするには、*塩漬けする必要があります*。 – Inshallah
ハッシュをサイト固有のものにすることを許可しました。ユーザーが複数のサイトで同じパスワードを使用する場合に便利です。同じサイトに対する再生を妨げません。 ハッシュが塩漬けされている場合は、塩がクライアントからサーバーに移動する必要があります。以前よりも安全ではありません。それ以外の場合は、チャレンジ/レスポンスです。 –