Pourquoi ne pas utiliser HTTPS pour tout?

126

Si je configurais un serveur et que j'avais le ou les certificats SSL, pourquoi n'utiliserais-je pas HTTPS pour l'ensemble du site plutôt que pour les achats / connexions? Je pense qu'il serait plus logique de crypter tout le site et de protéger entièrement l'utilisateur. Cela éviterait des problèmes tels que décider de ce qui doit être sécurisé, car tout le serait, et ce n'est pas vraiment un inconvénient pour l'utilisateur.

Si j'utilisais déjà un HTTPS pour une partie du site, pourquoi ne voudrais-je pas l'utiliser pour l'ensemble du site?

C'est une question connexe: pourquoi https n'est-il utilisé que pour la connexion? , mais les réponses ne sont pas satisfaisantes. Les réponses supposent que vous n'avez pas pu appliquer https à l'ensemble du site.

Malfist
la source
2
Je suis étonné que les sociétés de services financiers utilisent toujours http.
Tom Hawtin - tackline
15
@Tom Je souhaite que certains des sites qui m'envoient des messages de phishing utilisent https pour leurs sites falsifiés, je sais donc que je transmets mes données au bon phisher.
WhirlWind
Merci d'avoir posé cette question. Je supposais que les performances en étaient la raison et que ce serait bien pire que http. En voyant les réponses, il semble que les performances ne soient pas terriblement mauvaises, ce qui me fait trop m'étonner.
sundar
4
Je pense que vous avez choisi la pire réponse sur la page, avec actuellement 11 votes contre. La réponse que vous avez choisie a un mépris total de la sécurité et des meilleures pratiques.
tour
5
Cette question mérite vraiment une réponse moderne et éclairée.
Old Badman Gray

Réponses:

17

Je peux penser à plusieurs raisons.

  • Certains navigateurs peuvent ne pas prendre en charge SSL.
  • SSL peut diminuer quelque peu les performances. Si les utilisateurs téléchargent des fichiers publics volumineux, le système peut être chargé de les chiffrer à chaque fois.
Tourbillon
la source
137
Quels navigateurs ne prennent pas en charge SSL?
Malfist
6
Certaines compilations de lynx ne le supportent pas. Si vous ne supportez que les navigateurs plus récents, ça devrait aller.
WhirlWind
5
Je regardais à travers ceci: iweb.tntech.edu/hexb/publications/https-STAR-03122003.pdf "Une fois le serveur saturé, les performances du système de HTTPS atteignent environ 67% de HTTP en termes de débit."
WhirlWind
16
Je t buy this explanation. 1) Donn'utilise pas de navigateur qui ne prend pas en charge SSL en 2013. 2) même Google utilise SSL en ce moment 3) correctement configuré, vous pouvez rediriger le trafic http vers le bon lien https.
jfyelle
4
Mauvaise réponse, pourquoi tant de votes positifs? Quel navigateur sur terre ne prend pas en charge SSL et les utilisateurs n'ont pas à se souvenir d'avoir tapé https, peut être géré avec des redirections
Sanne
25

En plus des autres raisons (en particulier liées aux performances), vous ne pouvez héberger qu'un seul domaine par adresse IP * lorsque vous utilisez HTTPS.

Un serveur peut prendre en charge plusieurs domaines dans HTTP parce que le serveur en- tête HTTP permet de le savoir serveur qui de domaine pour répondre avec.

Avec HTTPS, le serveur doit offrir son certificat au client lors de la prise de contact TLS initiale (avant le démarrage de HTTP). Cela signifie que l'en- tête du serveur n'a pas encore été envoyé, il n'y a donc aucun moyen pour le serveur de savoir quel domaine est demandé et avec quel certificat (www.foo.com ou www.bar.com) répondre.


* Note de bas de page: techniquement, vous pouvez héberger plusieurs domaines si vous les hébergez sur différents ports, mais ce n'est généralement pas une option. Vous pouvez également héberger plusieurs domaines si votre certificat SSL possède un caractère générique. Par exemple, vous pouvez héberger à la fois foo.example.com et bar.example.com avec le certificat * .example.com

Eadwacer
la source
5
Un certificat SSL générique ne résoudrait-il pas ce problème?
Rob
La note de bas de page contredit la réponse: / vous pouvez utiliser des certificats génériques et héberger n'importe quel domaine. en.wikipedia.org/wiki/Wildcard_certificate
lucascaro
23
Ce problème a longtemps été résolu par l'indication du nom du serveur, qui est actuellement prise en charge par tous les principaux navigateurs. en.wikipedia.org/wiki/Server_Name_Indication
tia
@tia sauf que tous les serveurs Web ne le prennent pas en charge
meffect
2
@meffect ... Mais il y en a beaucoup, y compris apache2, nginx, lighttpd et nodejs. En outre, le développeur peut choisir le proxy inverse qu'il utilise pour le tunnel HTTPS. Dire "aucun client ne le prend en charge" serait un point valable si c'était vrai, car c'est quelque chose sur lequel le développeur n'a aucun contrôle et doit en tenir compte. Cependant, dire "certains serveurs ne le supportent pas" est en grande partie hors de propos, précisément parce qu'il n'a pas besoin d'être pris en compte. Surtout quand tous les serveurs traditionnels ne sont en fait un soutien.
Parthe Shot
13

SSL / TLS n'est pas utilisé assez souvent. HTTPS doit être utilisé pour toute la session , à aucun moment un ID de session ne peut être envoyé via HTTP. Si vous utilisez uniquement https pour vous connecter, vous êtes en violation flagrante du top 10 de l'OWASP pour 2010 «A3: Authentification et gestion de session interrompues».

tour
la source
Cela peut être une hypothèse trop large. Il n'y a aucune raison pour laquelle l'état de session ne peut pas être géré séparément pour http et https via une seule opération de connexion https. Il est probable que cela représente plus de travail que sa valeur et invite des bogues liés à la sécurité, mais ne semble pas automatiquement constituer une violation claire.
Einstein
@Einstein veuillez lire l'OWASP A3, il est rédigé très clairement. Gardez à l'esprit que l'attaquant n'a pas besoin du nom d'utilisateur / mot de passe s'il dispose du cookie d'une session authentifiée.
tour du
Le site fournit un https / http mixte. La connexion https fournit des jetons de session à faible et haute sécurité séparés. Les jetons de faible sécurité attribués uniquement à la session http ne fonctionneraient pas pour les opérations nécessitant une sécurité élevée. D'après ma lecture, OWASP A3 met en lumière le problème de base de la possibilité d'un accès haute sécurité via un transport à faible sécurité.
Einstein
@Einstein Alors vous n'êtes pas d'accord sur le fait que les identifiants de session sont utilisés pour authentifier les navigateurs Web? Prenez en compte ce modèle d'attaque, dans les attaques xss, vous essayez d'obtenir la valeur de document.cookieafin que l'attaquant puisse l'utiliser pour s'authentifier. Cette valeur peut également être obtenue en reniflant le trafic, que https arrête. Je ne sais pas exactement ce que vous voulez dire.
Tour du
Dans votre scénario, l'ID de session pour http serait sans valeur pour les ressources protégées https si un système devait créer deux sessions distinctes pour une seule action d'authentification afin de permettre aux deux protocoles d'être utilisés sans session https et ressources associées exposées par le cookie de session http. Par exemple, une session http pourrait être utilisée pour identifier l'accès aux ressources publiques à des fins de rapport ou l'accès aux babillards publics, mais elles ne seraient pas valides pour les ressources sécurisées.
Einstein
12

Pourquoi ne pas envoyer chaque courrier postal dans une enveloppe opaque inviolable par courrier recommandé? Quelqu'un de la poste en aurait toujours la garde personnelle, vous pouvez donc être presque sûr que personne ne fouine votre courrier. De toute évidence, la réponse est que si certains courriers en valent la peine, la plupart des courriers ne le sont pas. Je m'en fiche si quelqu'un lit mon "Content que tu sois sorti de prison!" carte postale à l'oncle Joe.

Le chiffrement n'est pas gratuit et n'aide pas toujours.

Si une session (comme les achats, les opérations bancaires, etc.) va se terminer en utilisant HTTPS, il n'y a aucune bonne raison de ne pas rendre toute la session HTTPS le plus tôt possible.

Mon avis est que HTTPS ne devrait être utilisé que lorsque cela est inévitable, soit parce que la demande ou la réponse doit être protégée de l'espionnage intermédiaire. A titre d'exemple, allez voir Yahoo! page d'accueil. Même si vous êtes connecté, la plupart de vos interactions se feront via HTTP. Vous vous authentifiez via HTTPS et obtenez des cookies qui prouvent votre identité, vous n'avez donc pas besoin de HTTPS pour lire les actualités.

David M
la source
LOL !!! Génial! Je parie que le facteur malhonnête ouvrant l'enveloppe avec "Content que tu sois sorti de prison" flippera un peu son pantalon et le refermera parfaitement ..
Andrei Rînea
19
Si le courrier recommandé coûtait 1% de plus au lieu de 300% de plus, je l' utiliserais pour tout.
solublefish
3
You authenticate over HTTPS and get cookies that prove your identity, so you don't need HTTPS to read news stories.Ce n'est pas la bonne façon de gérer l'authentification de session. Les cookies doivent être définis avec l'indicateur SECURE. Mais sans tenir compte de cet horrible conseil de sécurité pendant une seconde ... L'analogie de votre courrier n'est pas vraiment exacte pour plusieurs raisons. L'un étant que vous ne pouvez généralement pas injecter des exploits dans le courrier de retour, ou usurper l'identité de quelqu'un pour quelqu'un d'autre en toute impunité, ou afficher un message "Votre session a expiré" dans le courrier de retour afin qu'ils ressaisissent les informations d'identification qu'ils utilisent pour Yahoo! et leur banque.
Parthe Shot
La réutilisation du mot de passe et la fixation de session, entre autres, ne sont pas des problèmes dans le courrier postal.
Tir parthe le
Ce sont de bons points, mais vous appliquez l'analyse de 2016 à une discussion en 2010.
David M
12

La principale raison, au-delà de la charge du système, est qu'il rompt l'hébergement virtuel basé sur le nom. Avec SSL, c'est un site - une adresse IP. C'est assez cher et plus difficile à administrer.

Adam Wright
la source
+1 C'est la raison pour laquelle Google App Engine ne prend pas en charge https sur les domaines personnalisés. En attendant que TLS-SNI soit plus largement pris en charge.
Sripathi Krishnan
1
Vous pouvez le récupérer avec du matériel de terminaison SSL. Et si la charge du système est un problème (c'est pour beaucoup de gens!) Alors le SSL matériel peut être la voie à suivre de toute façon.
Jason
sauf que vous pouvez avoir plusieurs domaines dans le même certificat.
lucascaro
10
Pas vrai du tout. (Plus maintenant, en tout cas.)
Parthe Shot
7
Downvoter car les informations contenues dans le message sont obsolètes SNI est désormais pris en charge par tous les principaux navigateurs.
Martin Törnwall
5

Pour les liaisons à latence élevée, la prise de contact initiale TLS nécessite des allers-retours supplémentaires pour valider la chaîne de certificats (y compris l'envoi de tous les certificats intermédiaires), convenir des suites de chiffrement et établir une session. Une fois qu'une session est établie, les demandes suivantes peuvent utiliser la mise en cache de session pour réduire le nombre d'allers-retours, mais même dans ce meilleur cas, il y a encore plus d'allers-retours qu'une connexion HTTP normale ne le requiert. Même si les opérations de chiffrement étaient des aller-retour gratuits ne le sont pas et peuvent être tout à fait visibles sur des liens réseau plus lents, surtout si le site ne tire pas parti du pipeline http. Pour les utilisateurs haut débit au sein d'un segment bien connecté du réseau, ce n'est pas un problème. Si vous faites des affaires à l'international, le https peut facilement entraîner des retards notables.

Il existe des considérations supplémentaires telles que la maintenance du serveur de l'état de session nécessitant potentiellement beaucoup plus de mémoire et, bien sûr, des opérations de chiffrement des données. Tous les petits sites n'ont pratiquement pas à se soucier de la capacité du serveur donnée par rapport au coût du matériel actuel. Tout site de grande taille pourrait facilement se permettre un déchargement CPU / w AES ou des cartes complémentaires pour fournir des fonctionnalités similaires.

Tous ces problèmes deviennent de plus en plus un problème à mesure que le temps passe et que les capacités du matériel et du réseau s'améliorent. Dans la plupart des cas, je doute qu'il y ait une différence tangible aujourd'hui.

Il peut y avoir des considérations opérationnelles telles que des restrictions administratives sur le trafic https (pensez à des filtres de contenu intermédiaires, etc.), éventuellement des réglementations d'entreprise ou gouvernementales. Certains environnements d'entreprise nécessitent un décryptage des données au niveau du périmètre pour éviter les fuites d'informations ... les interférences avec les points d'accès et les systèmes d'accès Web similaires incapables d'injecter des messages dans les transactions https. En fin de compte, à mon avis, les raisons de ne pas utiliser https par défaut sont probablement assez petites.

Einstein
la source
4

https est plus gourmand en ressources que le http normal.

Il exige plus des serveurs et des clients.

Johan
la source
3

Si toute la session est chiffrée, vous ne pourrez pas utiliser la mise en cache pour les ressources statiques comme les images et les js au niveau du proxy, par exemple le FAI.

Alexei Tenitski
la source
Eh bien, sauf pour les proxys de terminaison SSL, ou si vous utilisez un CDN compatible HTTPS.
Tir parthe le
3

Vous devriez utiliser HTTPS partout, mais vous perdrez ce qui suit:

  1. Vous ne devez certainement pas utiliser la compression SSL ou la compression HTTP sur SSL, en raison d'attaques BREACH et CRIME. Donc pas de compression si votre réponse contient des identifiants de session ou csrf. Vous pouvez atténuer ce problème en plaçant vos ressources statiques (images, js, css) sur un domaine sans cookie et en y utilisant la compression. Vous pouvez également utiliser la minification HTML.

  2. Un certificat SSL, une adresse IP, sauf si vous utilisez SNI, qui ne fonctionne pas sur tous les navigateurs (ancien android, blackberry 6, etc.).

  3. Vous ne devez pas héberger de contenu externe sur vos pages qui ne passe pas par SSL.

  4. Vous perdez l'en-tête HTTP Referer sortant lorsque le navigateur accède à une page HTTP, ce qui peut ou non être un problème pour vous.

Neil McGuigan
la source
0

Eh bien, la raison évidente est la performance: toutes les données devront être cryptées par le serveur avant la transmission puis décryptées par le client à la réception, ce qui est une perte de temps s'il n'y a pas de données sensibles. Cela peut également affecter la quantité de votre site mise en cache.

Il est également potentiellement déroutant pour les utilisateurs finaux si toutes les adresses utilisent https://plutôt que le familier http://. Voir également cette réponse:

Pourquoi ne pas toujours utiliser https lors de l'inclusion d'un fichier js?

Will Vousden
la source
9
pourquoi cela dérouterait-il les utilisateurs? Combien regardent réellement le protocole de l'URI?
Malfist
Aujourd'hui, 10 ans plus tard, https est plus courant et http serait déroutant
madprops
0

https nécessite que le serveur crypte et décrypte les demandes et réponses des clients. L'impact sur les performances s'additionnera si le serveur sert de nombreux clients. C'est pourquoi la plupart des implémentations actuelles de https sont limitées à l'authentification par mot de passe uniquement. Mais avec l'augmentation de la puissance de calcul, cela peut changer, après tout, Gmail utilise SSL pour l'ensemble du site.

futureelite7
la source
0

En plus de la réponse de WhirlWind, vous devez tenir compte du coût et de l'applicabilité des certificats SSL, des problèmes d'accès (il est possible, bien que peu probable, qu'un client ne puisse pas communiquer via le port SSL), etc.

L'utilisation de SSL n'est pas une garantie de sécurité. Ce type de protection doit être intégré à l'architecture de l'application, plutôt que d'essayer de s'appuyer sur une solution magique.

3Dave
la source
2
Étant donné que l'utilisateur protège déjà une partie du site, le coût du certificat est plus ou moins théorique.
futureelite7
2
@ futureelite7 est un bon point, mais probablement pertinent pour d'autres qui pourraient faire des recherches sur ce sujet à l'avenir.
3Dave
Le Featurisme est l'ennemi de la sécurité. La majorité des faiblesses de mes propres trucs ont des racines dans une caractéristique peu judicieuse que moi-même ou un prédécesseur a acceptée dans le plan de produit. Je trouve que lancer une fonctionnalité parce qu'elle provoque une faille de sécurité ne vous rend pas plus populaire que de la refuser en premier lieu. La popularité n'a pas d'importance, mais malheureusement elle le peut et le fait. À votre place, je me demanderais à quel point je veux vraiment traiter avec des utilisateurs non sécurisés, ou si l'application convient même aux utilisateurs qui ne peuvent pas utiliser le cryptage (pensez: banque, politique, activisme).
Jason
0

On m'a dit que sur un projet de notre entreprise, ils ont constaté que la bande passante utilisée par les messages SSL était nettement supérieure à celle des messages simples. Je crois que quelqu'un m'a dit que c'était 12 fois plus de données. Je ne l'ai pas vérifié moi-même et cela semble très élevé, mais s'il y a une sorte d'en-tête ajoutée à chaque page et que la plupart des pages ont une petite quantité de contenu, ce n'est peut-être pas si loin.

Cela dit, les tracas des allers-retours entre http et https et le suivi des pages qui se trouvent me semblent trop demander. Je n'ai essayé qu'une seule fois de créer un site qui les mélangeait et nous avons fini par abandonner le plan lorsque nous nous sommes fait trébucher par des choses complexes comme des fenêtres pop-up créées par Javascript qui se sont associées au mauvais protocole et ce genre de choses. Nous avons fini par rendre l'ensemble du site https moins de problèmes. Je suppose que dans les cas simples où vous n'avez qu'un écran de connexion et un écran de paiement qui doivent être protégés et que ce sont de simples pages, ce ne serait pas un gros problème à mélanger.

Je ne m'inquiéterais pas beaucoup de la charge de déchiffrement du client. Normalement, le client passera beaucoup plus de temps à attendre que les données arrivent sur le fil qu'il n'en faut pour les traiter. Tant que les utilisateurs ne disposent pas systématiquement de connexions Internet gigabit / s, la puissance de traitement du client n'est probablement pas pertinente. La puissance du processeur requise par le serveur pour crypter les pages est un problème différent. Il pourrait bien y avoir des problèmes de ne pas pouvoir suivre des centaines ou des milliers d'utilisateurs.

Geai
la source
1
La bande passante supplémentaire est faible, même dans le pire des cas.
Président James K. Polk
0

Un autre petit point (peut-être que quelqu'un peut vérifier), si un utilisateur tape des données dans un élément de formulaire tel qu'une zone de texte puis, pour une raison quelconque, actualise la page ou le serveur se bloque pendant une seconde, les données saisies par l'utilisateur sont perdues en utilisant HTTPS mais est conservé à l'aide de HTTP.

Remarque: je ne sais pas si cela est spécifique au navigateur, mais cela se produit certainement avec mon navigateur Firefox.

toc777
la source
0

Windows Server 2012 avec IIS 8.0 propose désormais SNI qui est l'indication du nom du serveur qui permet à plusieurs applications Web SSL dans IIS d'être hébergées sur une même adresse IP.

Webmaister
la source
1
Qu'est-ce que cela a à voir avec la question? C'est une fonctionnalité intéressante, mais je ne vois pas la pertinence.
user1618143