複数のツールを使用して、Ajax 経由でこれを行うことができます。私は個人的に、データベース アプリのログオンのためにこれを行いました。残念ながら、これを達成するための単一のソリューションを知りません。最終的に、最善の解決策は SSL 証明書を使用することです。しかし、SSL を実装する前に、アプリを安全に立ち上げる必要がある場合も見てきました。
ユーザー データベースにパスワードを保存する方法としては Bcrypt の方が確実に安全ですが、これは Ajax 部分ではなくバックエンドに当てはまります。クライアント/ブラウザで Bcrypt を使用する場合、暗号化された文字列はインターネット上で安全に渡されません。
私が最近構築したソリューションでは、ブラウザー (JavaScript) とサーバー (私の場合は ASP.NET サイト) の間で RSA 暗号化と AES 暗号化を使用しています。
フローは次のように機能します。
- クライアントはサーバーに RSA 公開鍵を要求します。
- サーバーは RSA 公開鍵を送り返し、RSA 秘密鍵を保持します。
- クライアントは AES キーを作成し、RSA 公開キーで暗号化します。
- 暗号化された AES キーはサーバーに送り返され、メモリに保持されます。
- これで、Ajax メッセージを双方向で安全に送信できるようになりました。
- 各側は、暗号化と復号化のための AES キーを安全に認識できるようになりました。
これらすべてを行うためのワンストップ ソリューションがあればいいのですが、現時点ではわかりません。
私が使用したライブラリは次のとおりです。