5

jQuery Ajax を使用してユーザーをログインさせています。現在、JS を使用してユーザー名とパスワードのテキスト ボックスから値を取得し、資格情報を確認する aspx ページに送信しています。次に、ユーザーがログインしているかどうかを知らせる JSON を返します。すべて問題なく動作しますが、Firebug を使用しているときに、パスワードがプレーン テキストで送信されていることに気付きました。

パスワードを暗号化する最良の方法は何ですか? (ところで、私はHTTPSサーバーにいません)

4

4 に答える 4

3

Bcryptはあなたの友達かもしれません。また、 jsBCryptという名前の Javascript の実装もあります。この洞察に満ちた記事を読むことを強くお勧めします:パスワードを解読できない形式で保存する.

しかし:気をつけて!SSL またはサーバー提供のnonceを使用しない場合、中間者攻撃に対して脆弱になる可能性があります。クライアントとサーバー間の (暗号化されていない) トラフィックを誰かが読み取ると、暗号化されたパスワードが取得されます。そして、本当のパスワードを知らなくても、必要なときにいつでもそれを使用してサーバーに対して認証するだけで十分です..

于 2011-07-19T13:52:03.123 に答える
2

https を使用します。そうした場合でも、ブラウザには暗号化されていない値が表示されることに注意してください。これは、firebug がデータを (どちらの方法でも) 取得したときに、まだ暗号化/復号化されていないためです。

弾丸をかじってhttpsを設定することが道だと本当に思います。十分に吟味された技術です。独自に展開したい場合は、安全ではなく、クライアントとサーバーの両方で多くの作業を行う必要があります.

于 2011-06-07T18:07:55.670 に答える
1

sha1 ( http://www.webtoolkit.info/javascript-sha1.html ) を使用してパスワードをハッシュしてから送信しないのはなぜですか? データベースにもハッシュ化されたパスワードを保存する必要があります。したがって、プレーンテキストで保存することをお勧めします。

于 2011-06-07T18:42:56.793 に答える
0

複数のツールを使用して、Ajax 経由でこれを行うことができます。私は個人的に、データベース アプリのログオンのためにこれを行いました。残念ながら、これを達成するための単一のソリューションを知りません。最終的に、最善の解決策は SSL 証明書を使用することです。しかし、SSL を実装する前に、アプリを安全に立ち上げる必要がある場合も見てきました。

ユーザー データベースにパスワードを保存する方法としては Bcrypt の方が確実に安全ですが、これは Ajax 部分ではなくバックエンドに当てはまります。クライアント/ブラウザで Bcrypt を使用する場合、暗号化された文字列はインターネット上で安全に渡されません。

私が最近構築したソリューションでは、ブラウザー (JavaScript) とサーバー (私の場合は ASP.NET サイト) の間で RSA 暗号化と AES 暗号化を使用しています。

フローは次のように機能します。

  • クライアントはサーバーに RSA 公開鍵を要求します。
  • サーバーは RSA 公開鍵を送り返し、RSA 秘密鍵を保持します。
  • クライアントは AES キーを作成し、RSA 公開キーで暗号化します。
  • 暗号化された AES キーはサーバーに送り返され、メモリに保持されます。
  • これで、Ajax メッセージを双方向で安全に送信できるようになりました。
    • 各側は、暗号化と復号化のための AES キーを安全に認識できるようになりました。

これらすべてを行うためのワンストップ ソリューションがあればいいのですが、現時点ではわかりません。

私が使用したライブラリは次のとおりです。

于 2014-09-04T20:51:07.653 に答える