web-dev-qa-db-ja.com

GETデータもHTTPSで暗号化されていますか?

あなたが取得するとき

https://encrypted.google.com/search?q=%s

%sクエリは暗号化されていますか?または単に応答ですか?そうでない場合、Googleが公開コンテンツを暗号化して提供する必要があるのはなぜですか?

114
Jader Dias

URLやコマンド(GET)を含むリクエスト全体が暗号化されます。プロキシサーバーなどの介在者が収集できる唯一のものは、宛先アドレスとポートです。

ただし、TLSハンドシェイクのClient Helloパケットは、 [〜#〜] sni [〜#〜]拡張を介してプレーンテキストで完全修飾ドメイン名をアドバタイズできることに注意してください。 (@hafichukに感謝)。これはすべての最新のメインストリームブラウザで使用されていますが、一部は新しいOSでのみ使用されます。

EDIT:(これにより「Good Answer」バッジが取得されたので、質問全体に回答する必要があります...)

応答全体も暗号化されます。プロキシはその一部を傍受できません。

Googleは、すべてが公開されているわけではないため、https経由で検索やその他のコンテンツを提供します。また、公開コンテンツの一部を [〜#〜] mitm [〜#〜] 。いずれにしても、Google が自分で答える ことをお勧めします。

131
Marcelo Cantos

URL自体は暗号化されているため、クエリ文字列内のパラメーターは、単純にネットワーク上を移動しません。

ただし、GETデータを含むURLはWebサーバーによってログに記録されることが多いのに対し、POSTデータはめったに記録されません。したがって、/login/?username=john&password=doe、そうしないでください。代わりにPOSTを使用してください。

58
Thomas

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

上記は、Google Answersの非常に包括的な回答の一部です。

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

20
DVK

ホスト名の後のURLの部分は安全に送信されます。

たとえば、 https://somewhere.com/index.php?NAME=FIELD

/index.php?NAME=FIELD部分は暗号化されています。 somewhere.comは違います。

13
levis501

すべてが暗号化されますが、クエリはサーバーのログに残り、さまざまなログアナライザーなどにアクセスできることを覚えておく必要があります(通常POST要求の場合はそうではありません)。

接続は、要求が送信される前に暗号化されます。はい、クエリ文字列を含め、リクエストも暗号化されます。

4
cHao

はい、安全です。 SSLはすべてを暗号化します。

POSTリクエストからの抜粋:

POST /foo HTTP/1.1
... some other headers

GETリクエストからの抜粋:

GET /foo?a=b HTTP/1.1
... some other headers

どちらの場合も、ソケットで送信されるものはすべて暗号化されます。クライアントsees GETリクエスト中にブラウザ内のパラメータが表示されるという事実は、真ん中の男性が同じものを見るという意味ではありません。

3
Darin Dimitrov

SSLはヘッダー解析の前に実行されます。つまり、次のことを意味します。

Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed

リクエストは次のようになります(正確な構文は思い出せませんが、これは十分に近いはずです):

GET /search?q=qwerty HTTP/1.1
Host: www.google.de

これは、同じIP上の複数のホストに対して異なるSSL証明書を持つことが問題であり、要求されたホスト名は復号化されるまでわからない理由でもあります。

3
Morfildur

HTTPS経由でWebサイトに接続し、多数のGETパラメーターを渡しました。次に、wiresharkを使用してネットワークをスニッフィングしました。 HTTPを使用すると、URLは暗号化されずに送信されます。つまり、URLのすべてのGETパラメーターを簡単に確認できます。 HTTPSを使用すると、すべてが暗号化され、どのパケットがGETコマンドであるか、その内容はもちろん見当たりません!

3
Jeff Lamb

HTTPSを使用する場合、GETリクエストは暗号化されます-実際、これがセキュリティで保護されたWebサイトに一意のIPアドレスが必要な理由です-リクエストが解読されるまで、リクエストから目的のホスト名(または仮想ディレクトリ)を取得する方法はありません。

0
Michael Burr