46 votes

Si vous utilisez https, vos paramètres d'URL seront-ils sûrs de renifler?

Supposons que je configure un serveur Web php simple avec une page accessible via https. L'URL a des paramètres simples comme https://www.example.com/test?abc=123. Est-il vrai que le paramètre ici dans ce cas sera à l'abri des personnes reniflant les paquets? Et cela serait-il vrai si le serveur n'utilise aucun certificat SSL?

71voto

JoshBerke Points 34238

Oui votre URL serait à l'abri de renifler; Toutefois, si votre page fait référence à des ressources tierces, telles que Google Analytics, que vous ajoutiez du contenu, l’URL complète sera envoyée à la tierce partie du référent. Si c'est vraiment sensible, il n'appartient pas à la chaîne de requête.

En ce qui concerne votre deuxième partie de la question, vous ne pouvez pas utiliser SSL si vous n’avez pas de certificat sur le serveur.

56voto

Ray Hayes Points 9819

HTTPS Établit un sous-jacent SSL conenction avant tout transfert de données HTTP est transféré. Cela garantit que toutes les URL données (à l'exception du nom d'hôte, qui est utilisé pour établir la de connexion) est réalisée uniquement à l'intérieur de cette connexion est cryptée et est protégé de l'homme-dans-le-milieu les attaques de la même manière que n'importe quel protocole HTTPS les données.

Tous HTTP au niveau des transactions au sein d'une Connexion HTTPS sont menées au sein de l'établi de session SSL, et pas de les données de la requête est transféré avant l' connexion sécurisée est établie.

De l'extérieur, les seules données visible dans le monde le nom d'hôte et le port auquel vous vous connectez. Tout le reste est tout simplement un flux de des données binaires qui est crypté à l'aide d'un la clé privée partagée uniquement entre vous et le serveur.

Dans l'exemple que vous fournissez votre navigateur pourrait faire ceci:

  1. Tirer nom d'hôte (et le port le cas échéant) de à partir de l'URL.
  2. Se connecter à l'hôte.
  3. Certificat de vérification (il doit être "signé" par connu de l'autorité, s'appliquent spécifiquement pour corriger l'adresse IP et le port, et être actuel).
  4. Le navigateur et le serveur l'échange de chiffrement des données et la le navigateur reçoit une clé privée.
  5. L' Requête HTTP, chiffré avec établi de la cryptographie.
  6. La réponse HTTP est reçu. Également crypté.

HTTP est une "Application Layer" protocole, il est effectué sur le haut de la couche sécurisée. Selon le protocole SSL spécification, établi par Netscape, dicte que pas de couche d'application les données peuvent être transmises jusqu'à ce qu'un sécurisé la connexion est établie - comme décrites dans le paragraphe suivant:

"En ce moment, un changement cipher spec le message est envoyé par le client, et le copies client dans l'attente de l'Cipher Spec dans le courant de Cipher Spec. L' client puis envoie immédiatement le fini de message en vertu de la nouvelle les algorithmes, les clés et les secrets. Dans réponse, le serveur va envoyer son propre changement cipher spec message, transfert l'attente pour le courant de Chiffrement Spec, et envoyer son message en vertu de la nouvelle Cipher Spec. À ce point, la poignée de main est complète et le client et le serveur peuvent commencer à échange de données de la couche application." http://wp.netscape.com/eng/ssl3/draft302.txt

Donc, oui. Les données contenues dans l'URL requête sur une connexion HTTPS est chiffré. Cependant, il est très mauvais la pratique d'inclure de telles sensibles de données comme un mot de passe dans l'un 'GET' demande. Bien qu'il ne peut pas être intercepté, les données pourraient être connecté en clair serverlogs sur le la réception de serveur HTTPS, et tout à fait peut-être aussi dans l'historique du navigateur. Il est probablement aussi disponible pour le navigateur plugins et peut-être même à d'autres les applications sur l'ordinateur client. Tout au plus une URL HTTPS pourrait être raisonnablement permis d'inclure une ID de session ou similaire non réutilisables variable. Il ne doit JAMAIS contenir de statique des jetons d'authentification.

La connexion HTTP concept est des plus clairement expliqué ici: http://www.ourshop.com/resources/ssl_step1.html

5voto

Aiden Bell Points 19856

dépend de ce que tu veux dire par sécurité

SSL crypte l'ensemble de la requête/réponse HTTP, donc l'URL dans la partie seront cryptées. Cela n'empêche pas les attaques de type MITM et de la corruption et de l'intégrité de la session SSL elle-même. Si un non-autorité de certificat est utilisé, ce qui rend les vecteurs d'attaque potentiels plus simple.

http://stackoverflow.com/questions/73536/are-rest-request-headers-encrypted-by-ssl

Est une question semblable.

3voto

idstam Points 1654

Les URL seront stockées à la fois dans les journaux du serveur et dans l'historique du navigateur. Même si elles ne sont pas détectables, elles sont loin d'être sécurisées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X