Question Les URL HTTPS sont-elles cryptées?


Toutes les URL sont-elles chiffrées lors de l'utilisation du chiffrement TLS / SSL (HTTPS)? Je voudrais savoir parce que je veux que toutes les données d'URL soient cachées en utilisant TLS / SSL (HTTPS).

Si TLS / SSL vous donne le chiffrement total de l'URL, je n'ai pas à vous soucier de cacher les informations confidentielles des URL.


764
2018-01-31 21:15


origine


Réponses:


Oui, la connexion SSL se situe entre la couche TCP et la couche HTTP. Le client et le serveur établissent d'abord une connexion TCP cryptée sécurisée (via le protocole SSL / TLS), puis le client envoie la requête HTTP (GET, POST, DELETE ...) sur cette connexion TCP cryptée.


721
2018-01-31 21:17



Puisque personne n'a fourni de capture de fil, en voici une.
Nom du serveur (la partie domaine de l'URL) est présentée dans le ClientHello paquet, dans texte brut.

Voici une requête de navigateur à:
https://i.stack.imgur.com/path/?some=parameters&go=here

ClientHello SNI Voir cette réponse pour en savoir plus sur les champs de la version TLS (il y en a 3 - pas les versions, les champs qui contiennent chacun un numéro de version!)

De https://www.ietf.org/rfc/rfc3546.txt:

3.1. Indication du nom du serveur

[TLS] ne fournit pas de mécanisme permettant à un client de dire à un serveur   le nom du serveur qu'il contacte.  Il peut être souhaitable pour   clients à fournir cette information pour faciliter la sécurité   connexions aux serveurs qui hébergent plusieurs serveurs «virtuels» à un   adresse réseau sous-jacente unique.

Afin de fournir le nom du serveur, les clients PEUVENT inclure un   extension de type "nom_serveur" dans le client (étendu) bonjour. 


En bref:

  • FQDN (la partie domaine de l'URL) MAI se transmettre en clair à l'intérieur de ClientHello paquet si l'extension SNI est utilisée

  • Le reste de l'URL (/path/?some=parameters&go=here) n'a pas d'affaires à l'intérieur ClientHello puisque l'URL de requête est une chose HTTP (OSI Layer 7), elle n'apparaîtra donc jamais dans une prise de contact TLS (Layer 4 ou 5). Cela viendra plus tard dans un GET /path/?some=parameters&go=here HTTP/1.1 Requête HTTP, APRÈS la garantir Le canal TLS est établi.


RÉSUMÉ

Le nom de domaine PEUT être transmis en clair (si l'extension SNI est utilisée dans la négociation TLS) mais l'URL (chemin et paramètres) est toujours cryptée.


275
2017-08-02 18:26



Comme le autre  réponses Nous avons déjà souligné, https "URLs" sont en effet cryptés. Cependant, votre requête / réponse DNS lors de la résolution du nom de domaine ne l'est probablement pas, et bien sûr, si vous utilisiez un navigateur, vos URL pourraient aussi être enregistrées.


138
2018-01-31 21:26



L'intégralité de la demande et de la réponse est cryptée, y compris l'URL.

Notez que lorsque vous utilisez un proxy HTTP, il connaît l'adresse (domaine) du serveur cible, mais ne connaît pas le chemin demandé sur ce serveur (c'est-à-dire que la requête et la réponse sont toujours cryptées).


93
2018-01-31 21:17



Je suis d'accord avec les réponses précédentes:

Pour être explicite:

Avec TLS, la première partie de l'URL (https://www.example.com/) est toujours visible lors de la construction de la connexion. La deuxième partie (/ herearemygetparameters / 1/2/3/4) est protégée par TLS.

Cependant, il y a un certain nombre de raisons pour lesquelles vous ne devriez pas mettre de paramètres dans la requête GET.

D'abord, comme déjà mentionné par d'autres: - fuite via la barre d'adresse du navigateur - fuite à travers l'histoire

En plus de cela, vous avez une fuite d'URL via le référant http: l'utilisateur voit le site A sur TLS, puis clique sur un lien vers le site B. Si les deux sites sont sur TLS, la requête sur le site B contiendra l'URL complète du site A le paramètre referer de la requête. Et l'administrateur du site B peut le récupérer à partir des fichiers journaux du serveur B.)


84
2017-07-28 06:49



Un ajout à la réponse utile de Marc Novakowski - l'URL est stockée dans les journaux sur le serveur (par exemple, dans / etc / httpd / logs / ssl_access_log), donc si vous ne voulez pas que le serveur conserve les informations sur le long terme terme, ne le mettez pas dans l'URL.


45
2017-11-02 14:03



Oui et non.

La partie de l'adresse du serveur n'est PAS chiffrée puisqu'elle est utilisée pour configurer la connexion.

Cela pourrait changer à l'avenir avec le SNI et le DNS cryptés, mais à partir de 2018, les deux technologies ne sont pas couramment utilisées.

Le chemin, la chaîne de requête, etc. sont cryptés.

Remarque pour les demandes GET, l'utilisateur sera toujours en mesure de couper et coller l'URL à partir de la barre d'emplacement, et vous ne voudrez probablement pas y mettre des informations confidentielles qui peuvent être vues par quiconque regarde l'écran.


16
2018-01-31 21:20