web-dev-qa-db-ja.com

javascriptでMD5を使用してパスワードを送信する方法

Webサイトにログインするためのjqueryダイアログモーダルボックスがポップアップ表示されます。ユーザーがログインをクリックすると、次のようにlogin.phpファイルへの投稿要求が行われます。

$.post(
      'includes/login.php', 
      { user: username, pass: password },
      onLogin, 
      'json' );

ポストリクエストに入力する前に、そのパスワードでmd5を実行するにはどうすればよいですか?また、MD5()を使用してMySQLデータベースにユーザーのパスワードを保存しているので、保存されたバージョンのパスワードと送信されたパスワードのMD5を比較したいだけです。返信してくれてありがとう。

22
adhanlon

crypto-js は、多くの暗号化アルゴリズムを含む豊富なJavaScriptライブラリです。

必要なのは、単にCryptoJS.MD5(password)を呼び出すだけです

$.post(
  'includes/login.php', 
  { user: username, pass: CryptoJS.MD5(password) },
  onLogin, 
  'json' );
28
James Skidmore

誰かがパスワードのプレーンテキストHTTPトラフィック(またはキャッシュ/ Cookie)をスニッフィングしている場合、パスワードをハッシュに変換するだけでは役に立ちません-ハッシュパスワードはプレーンテキストと同様に「再生」できます。クライアントは、パスワードを多少ランダムなもの(日付や時刻など)でハッシュする必要があります。「AUTH CRAM-MD5」のセクションを参照してください: http://www.fehcom.de/qmail/smtpauth.html

28
jt.

この場合、CryptoJSを使用することをお勧めします。

基本的に、CryptoJSは、ベストプラクティスとパターンを使用してJavaScriptに実装された標準的で安全な暗号化アルゴリズムのコレクションです。これらは高速で、一貫性のあるシンプルなインターフェイスを備えています。

したがって、パスワード文字列のhash(MD5)を計算する場合は、次のようにします。

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script>
<script>
    var passhash = CryptoJS.MD5(password).toString();

    $.post(
      'includes/login.php', 
      { user: username, pass: passhash },
      onLogin, 
      'json' );
</script>

したがって、このスクリプトはパスワード文字列のハッシュをサーバーに送信します。

その他のハッシュ計算アルゴリズムの詳細とサポートについては、次のWebサイトをご覧ください。

http://code.google.com/p/crypto-js/

16
theCodeMachine

次のページをご覧になることをお勧めします。 http://pajhome.org.uk/crypt/md5/

ただし、パスワードの保護が重要な場合は、SHA256のようなものを実際に使用する必要があります(MD5は暗号的に安全なiircではありません)。さらに、TLSを使用して、httpsを使用できるように証明書を取得することを検討することもできます。

5
SapphireSun

Jtへの応答。あなたは正しい、パスワードだけのHTMLは中間者攻撃の影響を受けやすい。ただし、サーバーからGUIDを使用してシードできます...

$.post(
  'includes/login.php', 
  { user: username, pass: $.md5(password + GUID) },
   onLogin, 
  'json' );

これは、サーバーが各試行に対して新しいGUIDを生成するという点で、Man-In-The中間点を無効にします。

3
James

php jqueryを使用している場合、これが役立つ場合があります。

   $.ajax({
        url:'phpmd5file.php',
        data:{'mypassword',mypassword},
        dataType:"json",
        method:"POST",
        success:function(mymd5password){
            alert(mymd5password);
        }
    });

phpmd5.phpファイルで:

echo json_encode($ _ POST ["mypassword"]);

jspluginsは必要ありません。 ajaxを使用して、php md5()に任せるだけです。

1