Web サイトのログインフォームからサーバーにユーザー名とパスワードを適切に送信する方法に興味があります。
ユーザー名とパスワードを https サーバーにハッシュせずに送信した場合、パッケージを盗聴してパスワードを見つけた人にPOST要求で送信したパスワードはどの程度公開されますか? サーバーは https 対応です。
これを行うための適切な方法論は何でしょうか?
Web サイトのログインフォームからサーバーにユーザー名とパスワードを適切に送信する方法に興味があります。
ユーザー名とパスワードを https サーバーにハッシュせずに送信した場合、パッケージを盗聴してパスワードを見つけた人にPOST要求で送信したパスワードはどの程度公開されますか? サーバーは https 対応です。
これを行うための適切な方法論は何でしょうか?
サーバーでHTTPSが有効になっている場合、ネットワークを通過するデータはすべて暗号化されます。ネットワークのみの攻撃者が、当事者の1人に気付かれることなく、HTTPSを介してプレーンテキストのパスワードを盗聴することは非常に困難です。
HTTPSは、暗号化と認証の両方を提供するように設計されたトランスポート層でSSL/TLSを使用します。SSL / TLSプロトコルは、ハンドシェイクの一部として、セッションごとに異なる対称暗号化キーをネゴシエートし、強力なアルゴリズムとともに使用されて、ネットワーク上のデータを保護します。
「man-in-the-middle」攻撃を軽減するために、クライアントとサーバーが共有暗号化キーを確立するために使用する非対称キーも、信頼の保証を提供し、証明書の変更を防ぐために、認証局によって暗号化されます。 。認証局が信頼できる限り、証明書自体の署名とサーバー名を簡単に確認できます。最近のすべてのブラウザはこれを自動的に実行し、証明書に問題がある場合はユーザーに警告をスローします。
あなたとあなたのユーザーがSSLの適切な使用に関する問題を認識している限り(たとえば、秘密鍵を安全に保ち、ユーザーがブラウザの警告に注意を払うようにする)、SSL接続を介してプレーンテキストのパスワードを送信することは問題ありません。
アプリケーションの要求がそれさえできないようなものである場合は、X.509認証(クライアント側とサーバー側で証明書を使用する)またはKerberos認証(ネットワーク経由でパスワードを送信しない)を検討することができます。ただし、基本的なWebアプリケーションの場合、これらのソリューションはどちらもやり過ぎです。