web-dev-qa-db-ja.com

HTTPSを使用する場合、URLパラメーターはスニッフィングから安全ですか?

HTTPSでアクセスできるページを持つ単純なphp Webサーバーをセットアップするとします。 URLには、https://www.example.com/test?abc=123などの単純なパラメーターがあります。

この場合のパラメータは、パケットを盗聴する人々から安全であるというのは本当ですか?サーバーがSSL証明書を使用しない場合、これは本当ですか?

46
erotsppa

はい、あなたのURLはスニッフィングから安全です;ただし、見落とされがちな1つのホールは、ページがGoogleアナリティクス、コンテンツの追加などのサードパーティリソースを参照している場合、リファラーでURL全体がサードパーティに送信されることです。本当に敏感な場合は、クエリ文字列に属していません。

質問の2番目の部分に関しては、サーバーに証明書がない場合はSSLを使用できません。

70
JoshBerke

http://answers.google.com/answers/threadview/id/758002.html

HTTPS HTTPデータが転送される前に、基礎となるSSL接続を確立します。これにより、すべてのURLデータ(接続の確立に使用されるホスト名を除く)は、この暗号化された接続内でのみ運ばれ、HTTPSデータと同様に中間者攻撃から保護されます。 。

HTTPS接続内のすべてのHTTPレベルのトランザクションは、確立されたSSLセッション内で実行され、安全な接続が確立されるまでクエリデータは転送されません。

外部からは、世界に見える唯一のデータは、接続しているホスト名とポートです。それ以外はすべて、ユーザーとサーバー間でのみ共有される秘密キーを使用して暗号化されたバイナリデータのストリームです。

この例では、ブラウザがこれを行うことを指定します。

  1. URLからホスト名(および存在する場合はポート)を取得します。
  2. ホストに接続します。
  3. 証明書を確認します(正しいIPアドレスとポートに特別に適用され、最新のものであることが既知の機関によって「署名」されている必要があります)。
  4. ブラウザとサーバーは暗号化データを交換し、ブラウザは秘密鍵を受け取ります。
  5. HTTP要求が行われ、確立された暗号化で暗号化されます。
  6. HTTP応答が受信されます。暗号化されています。

HTTPは「アプリケーション層」プロトコルです。セキュリティで保護されたレイヤーの上にあります。 Netscapeが策定したSSL仕様によると、次の段落で概説するように、安全な接続が確立されるまで、アプリケーション層のデータは送信されないことが規定されています。

「この時点で、暗号仕様の変更メッセージがクライアントによって送信され、クライアントは保留中の暗号仕様を現在の暗号仕様にコピーします。その後、クライアントはすぐに新しいアルゴリズム、キー、シークレットで完成したメッセージを送信します。サーバーは、独自の変更暗号仕様メッセージを送信し、保留中のものを現在の暗号仕様に転送し、完了したメッセージを新しい暗号仕様で送信します。この時点で、ハンドシェイクは完了し、クライアントとサーバーはアプリケーションの交換を開始できますレイヤーデータ。」 http://wp.netscape.com/eng/ssl3/draft302.txt

あ、はい。 HTTPS接続のURLクエリに含まれるデータは暗号化されます。ただし、非常に貧弱です「GET」リクエストにパスワードなどの機密データを含めることは習慣です。傍受することはできませんが、データは受信側HTTPSサーバーのプレーンテキストサーバーログに記録され、ブラウザの履歴。おそらくブラウザープラグインでも利用でき、クライアントコンピューター上の他のアプリケーションでさえ可能です。せいぜいHTTPS URLには、セッションIDまたは同様の再利用不可能な変数を含めることが合理的に許可されます。静的認証トークンが含まれてはいけません。

HTTP接続の概念は、ここで最も明確に説明されています。 http://www.ourshop.com/resources/ssl_step1.html

54
Ray Hayes

要求されたURI(/ test?abc = 123)は、HTTP要求ヘッダーの一部としてWebサーバーに送信され、暗号化されます。

ただし、URLは他の方法でリークする可能性があります。通常は、Webブラウザーのツールバー、ブックマーク、友人へのリンクの送信です。送信するデータのコンテキスト/感度に応じて、データのPOSTがより適切な場合があります。

HTTPS接続にはSSL証明書が必要であり、購入したくない場合は自己生成証明書も必要です。

それが少し役立つことを願っています!

7
Flipper

safeの意味に依存します

SSLはHTTPリクエスト/レスポンス全体を暗号化するため、GET部分のURLは暗号化されます。これは、MITM攻撃やSSLセッション自体の整合性の破損を防ぐものではありません。権限のない証明書が使用される場合、これにより潜在的な攻撃ベクトルがより簡単になります。

Are REST SSLで暗号化されたリクエストヘッダー?

同様の質問です。

5
Aiden Bell

Url:sはサーバーのログとブラウザーの履歴の両方に保存されるため、スニッフィングできなくても安全とは言えません。

3
idstam

ワイヤーで、はい。エンドポイント(ブラウザーとサーバー)で必ずしも必要ではありません。 SSL/TLSは トランスポート層セキュリティ です。ブラウザとサーバー間のトラフィックを暗号化します。ブラウザ側でデータを覗くことができます(たとえば [〜#〜] bho [〜#〜] )。サーバー側に届くと、当然受信者が利用でき、処理するのと同じくらい安全です。データが最初の交換を超えて安全に移動する必要があり、クライアントのpr索好きな目から保護する必要がある場合は、 メッセージ層セキュリティ も確認する必要があります。

1
JP Alioto

SSL/TSLはトランスポートレイヤーセキュリティです。はい(@JPが書いたように)BHOまたは「ブラウザー外」のHTTPスニファーでデータを選択できます。彼らはwinsock32とアプリケーション間のメッセージを読みます。暗号化は、ブラウザではなくwinsock32で行われます。

ご覧ください(この部分はIEinspectorのページから引用されています): IEInspector HTTPアナライザーは、HTTP /を監視、トレース、デバッグ、分析できる便利なツールです[〜#〜] https [〜#〜]リアルタイムのトラフィック。

1
backslash17