web-dev-qa-db-fra.com

Les données GET sont-elles également cryptées en HTTPS?

Quand vous obtenez

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

Le %s la requête est cryptée? Ou juste la réponse? Si ce n'est pas le cas, pourquoi Google devrait-il également diffuser son contenu public avec cryptage?

114
Jader Dias

La demande entière est chiffrée, y compris l'URL et même la commande (GET). L'adresse de destination et le port sont les seuls éléments dont une partie intervenante, telle qu'un serveur proxy, puisse se renseigner.

Notez cependant que le paquet Client Hello d'une négociation TLS peut annoncer le nom de domaine complet en texte clair via l'extension [~ # ~] sni [~ # ~] (merci @hafichuk), qui est utilisé par tous les navigateurs classiques actuels, même si certains ne sont utilisés que sur les nouveaux systèmes d'exploitation.

EDIT: (Depuis que je viens d'obtenir un badge "Bonne réponse", je suppose que je devrais répondre à toute la question…)

La réponse entière est également cryptée; Les mandataires ne peuvent en intercepter aucune partie.

Google diffuse des recherches et d'autres contenus via https car ceux-ci ne sont pas tous publics et vous pouvez également masquer une partie du contenu public d'un MITM . Dans tous les cas, il vaut mieux laisser Google répondre par lui-même .

131
Marcelo Cantos

L'URL elle-même est cryptée. Par conséquent, les paramètres de la chaîne de requête ne sont pas transmis en clair sur le réseau.

Cependant, gardez à l'esprit que les URL, y compris les données GET, sont souvent consignées par le serveur Web, alors que les données POST le sont rarement. Par conséquent, si vous envisagez de faire quelque chose comme /login/?username=john&password=doe, alors ne le faites pas; utilisez plutôt un POST).

58
Thomas

HTTPS Établit une connexion SSL sous-jacente avant le transfert des données HTTP. Cela garantit que toutes les données d'URL (à l'exception du nom d'hôte utilisé pour établir la connexion) sont uniquement acheminées au sein de cette connexion chiffrée et protégées des attaques de type "man-in-the-middle" de la même manière que les données HTTPS.

Ce qui précède fait partie d’une réponse TRÈS complète de Google Answers située ici:

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

20
DVK

La partie de l'URL qui suit le nom d'hôte est envoyée en toute sécurité.

Par exemple, https://somewhere.com/index.php?NAME=FIELD

Le /index.php?NAME=FIELD la partie est cryptée. Le somewhere.com n'est pas.

13
levis501

Tout est crypté, mais vous devez vous rappeler que votre requête restera dans les journaux du serveur et sera accessible à divers analyseurs de journaux, etc. (ce qui n'est généralement pas le cas avec la requête POST)).

La connexion est cryptée avant la transmission de la demande. Donc, oui, la demande est également cryptée, y compris la chaîne de requête.

4
cHao

Oui, c'est sécurisé. SSL chiffre tout.

Extrait de POST requête:

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

Extrait de la requête GET:

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

Dans les deux cas, tout ce qui est envoyé sur le socket est crypté. Le fait que le client voit dans son navigateur lors d’une requête GET ne signifie pas qu’un homme au milieu verrait la même chose.

3
Darin Dimitrov

Le SSL a lieu avant l'analyse de l'en-tête, cela signifie:

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

Une demande ressemble à quelque chose comme ceci (je ne me souviens pas de la syntaxe exacte, mais celle-ci devrait être suffisamment proche):

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

C'est également pourquoi avoir des certificats SSL différents pour plusieurs hôtes sur la même adresse IP pose problème, le nom d'hôte demandé n'est pas connu avant le déchiffrement.

3
Morfildur

Je viens de me connecter via HTTPS à un site Web et de transmettre plusieurs paramètres GET. J'ai ensuite utilisé Wireshark pour renifler le réseau. En utilisant HTTP, l'URL est envoyée non cryptée, ce qui signifie que je peux facilement voir tous les paramètres GET dans l'URL. Avec HTTPS, tout est crypté et je ne peux même pas voir quel paquet est la commande GET, sans parler de son contenu!

3
Jeff Lamb

La demande GET est cryptée lors de l’utilisation du protocole HTTPS (c’est en fait la raison pour laquelle les sites Web sécurisés doivent disposer d’une adresse IP unique). Il n’est pas possible d’obtenir le nom d’hôte (ou le répertoire virtuel) voulu à partir de la demande tant qu’elle n’a pas été déchiffrée.

0
Michael Burr