Toutes les URL sont-elles cryptées lors de l'utilisation du cryptage TLS / SSL (HTTPS)? Je voudrais le savoir car je souhaite que toutes les données URL soient masquées lors de l'utilisation de TLS / SSL (HTTPS).
Si TLS / SSL vous offre un chiffrement total des URL, je n'ai pas à me soucier de cacher des informations confidentielles aux URL.
ssl
https
httprequest
Daniel Kivatinos
la source
la source
https://somewhere_i_trust/ways_to_protest_against_the_government/
. Ensuite, l'URL contient des données confidentielles, à savoir la suggestion que j'envisage de protester contre mon gouvernement.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 enverra la requête HTTP (GET, POST, DELETE ...) sur cette connexion TCP cryptée.
la source
Puisque personne n'a fourni une capture de fil, en voici une.
Le nom du serveur (la partie domaine de l'URL) est présenté dans le
ClientHello
paquet, en texte brut .Ce qui suit montre une demande de navigateur pour:
https://i.stack.imgur.com/path/?some=parameters&go=here
Voir cette réponse pour en savoir plus sur les champs de version TLS (il y en a 3 - pas des versions, des champs qui contiennent chacun un numéro de version!)
Depuis https://www.ietf.org/rfc/rfc3546.txt :
En bref:
Le FQDN (la partie domaine de l'URL) PEUT être transmis en clair à l'intérieur du
ClientHello
paquet si l'extension SNI est utiliséeLe reste de l'URL (
/path/?some=parameters&go=here
) n'a rien à faireClientHello
puisque l'URL de demande est une chose HTTP (couche OSI 7), donc elle n'apparaîtra jamais dans une prise de contact TLS (couche 4 ou 5). Cela viendra plus tard dans uneGET /path/?some=parameters&go=here HTTP/1.1
requête HTTP, APRÈS l' établissement du canal TLS sécurisé .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.
MISE À JOUR DE MARS 2019
Merci carlin.scott d' avoir soulevé celui-ci.
La charge utile de l'extension SNI peut désormais être chiffrée via ce projet de proposition RFC . Cette capacité n'existe que dans TLS 1.3 (en option et c'est aux deux extrémités de l'implémenter) et il n'y a pas de compatibilité descendante avec TLS 1.2 et ci-dessous.
CloudFlare le fait et vous pouvez en savoir plus sur les éléments internes ici - Si le poulet doit venir avant l'œuf, où mettez-vous le poulet?
En pratique, cela signifie qu'au lieu de transmettre le nom de domaine complet en texte brut (comme le montre la capture de Wireshark), il est désormais crypté.
REMARQUE: cela aborde l'aspect de la confidentialité plus que celui de la sécurité, car une recherche DNS inversée PEUT révéler l'hôte de destination souhaité de toute façon.
la source
Comme les autres réponses l' ont déjà souligné, les https "URL" sont en effet cryptées. Cependant, votre demande / réponse DNS lors de la résolution du nom de domaine ne l'est probablement pas, et bien sûr, si vous utilisez un navigateur, vos URL peuvent également être enregistrées.
la source
L'ensemble de la demande et de la réponse est crypté, 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 demande et la réponse sont toujours cryptées).
la source
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 l'établissement de la connexion. La deuxième partie (/ herearemygetparameters / 1/2/3/4) est protégée par TLS.
Cependant, il existe un certain nombre de raisons pour lesquelles vous ne devez pas mettre de paramètres dans la demande GET.
Tout d'abord, comme déjà mentionné par d'autres: - fuite via la barre d'adresse du navigateur - fuite via l'historique
En plus de cela, vous avez une fuite d'URL via le référent 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 demande vers le site B contiendra l'URL complète du site A dans le paramètre référent de la demande. Et l'administrateur du site B peut le récupérer à partir des fichiers journaux du serveur B.)
la source
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 la durée terme, ne le mettez pas dans l'URL.
la source
Oui et non.
La partie d'adresse du serveur n'est PAS cryptée car elle est utilisée pour établir la connexion.
Cela pourrait changer à l'avenir avec SNI et 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 hors 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.
la source
Un tiers qui surveille le trafic peut également être en mesure de déterminer la page visitée en examinant votre trafic et en le comparant avec le trafic d'un autre utilisateur lors de la visite du site. Par exemple, s'il n'y avait que 2 pages sur un site, une beaucoup plus grande que l'autre, la comparaison de la taille du transfert de données indiquerait la page que vous avez visitée. Il existe des moyens de masquer cela à un tiers, mais ce n'est pas un comportement normal du serveur ou du navigateur. Voir par exemple ce document de SciRate, https://scirate.com/arxiv/1403.0297 .
En général, les autres réponses sont correctes, bien que cet article montre que les pages visitées (c.-à-d. URL) peuvent être déterminées assez efficacement.
la source
Vous ne pouvez pas non plus toujours compter sur la confidentialité de l'URL complète. Par exemple, comme c'est parfois le cas sur les réseaux d'entreprise, les appareils fournis comme le PC de votre entreprise sont configurés avec un certificat racine supplémentaire "de confiance" afin que votre navigateur puisse discrètement faire confiance à une inspection par proxy (homme au milieu) du trafic https . Cela signifie que l'URL complète est exposée pour inspection. Ceci est généralement enregistré dans un journal.
De plus, vos mots de passe sont également exposés et probablement enregistrés et c'est une autre raison d'utiliser des mots de passe à usage unique ou de changer fréquemment vos mots de passe.
Enfin, le contenu des demandes et des réponses est également exposé s'il n'est pas chiffré autrement.
Checkpoint présente un exemple de configuration d'inspection . Un "cybercafé" à l'ancienne utilisant les PC fournis peut également être configuré de cette façon.
la source
Lien vers ma réponse sur une question en double . Non seulement l'URL est disponible dans l'historique des navigateurs, les journaux côté serveur, mais elle est également envoyée comme en-tête HTTP Referer qui, si vous utilisez du contenu tiers, expose l'URL à des sources indépendantes de votre volonté.
la source
Nous sommes maintenant en 2019 et le TLS v1.3 est sorti. Selon Cloudflare, le SNI peut être crypté grâce à TLS v1.3. Alors je me suis dit super! Voyons à quoi cela ressemble dans les paquets TCP de cloudflare.com Donc, j'ai attrapé un paquet de prise de contact "bonjour client" à partir d'une réponse du serveur cloudflare utilisant Google Chrome comme navigateur et Wireshark comme renifleur de paquets. Je peux toujours lire le nom du serveur en texte brut dans le paquet bonjour du client.
Alors, méfiez-vous de ce que vous pouvez lire car il ne s'agit toujours pas d'une connexion anonyme. Un middleware entre le client et le serveur pourrait consigner tous les domaines demandés par un client.
Il semble donc que le chiffrement de la SNI nécessite des implémentations supplémentaires pour fonctionner avec TLSv1.3
L'article suivant décrit le cryptage du SNI fourni par Cloudflare dans le cadre de TLSv1.3. Cependant, toutes les URL HTTP de cloudflare.com sont en texte brut dans le paquet TCP sous TLS v1.3
[ https://blog.cloudflare.com/encrypted-sni/ diplomatique-03]
la source
network.security.esni.enabled
, défininetwork.trr.mode
sur 2 (qui définit actuellement votre résolveur DoH sur CloudFlare), et redémarrez le navigateur (sic!); il utilisera ensuite ESNI - là où il est pris en charge par l'infrastructure du domaine. Voir blog.mozilla.org/security/2018/10/18/… pour plus de détails.Bien qu'il existe déjà de bonnes réponses, la plupart se concentrent sur la navigation par navigateur. J'écris ceci en 2018 et probablement quelqu'un veut savoir sur la sécurité des applications mobiles.
Pour les applications mobiles , si vous contrôlez les deux extrémités de l'application (serveur et application), tant que vous utilisez HTTPS, vous êtes en sécurité . iOS ou Android vérifiera le certificat et atténuera les éventuelles attaques MiM (ce serait le seul point faible de tout cela). Vous pouvez envoyer des données sensibles via des connexions HTTPS afin qu'elles soient chiffrées pendant le transport . Seule votre application et le serveur connaîtront tous les paramètres envoyés via https.
Le seul "peut-être" ici serait si le client ou le serveur est infecté par un logiciel malveillant qui peut voir les données avant qu'elles ne soient enveloppées dans https. Mais si quelqu'un est infecté par ce type de logiciel, il aura accès aux données, peu importe ce que vous utiliserez pour le transporter.
la source
De plus, si vous créez une API ReSTful, les problèmes de fuite de navigateur et de référent http sont généralement atténués car le client n'est peut-être pas un navigateur et il se peut que personne ne clique sur les liens.
Si tel est le cas, je recommanderais la connexion oAuth2 pour obtenir un jeton au porteur. Dans ce cas, les seules données sensibles seraient les informations d'identification initiales ... qui devraient probablement être dans une demande de publication de toute façon
la source
Bien que vous ayez déjà de très bonnes réponses, j'aime beaucoup l'explication sur ce site Web: https://https.cio.gov/faq/#what-information-does-https-protect
en bref: à l'aide de masques HTTPS:
la source