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.
Réponses:
Je peux penser à plusieurs raisons.
la source
t buy this explanation. 1) Don
n'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.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
la source
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».
la source
document.cookie
afin 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.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.
la source
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.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.
la source
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.
la source
https est plus gourmand en ressources que le http normal.
Il exige plus des serveurs et des clients.
la source
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.
la source
Vous devriez utiliser HTTPS partout, mais vous perdrez ce qui suit:
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.
Un certificat SSL, une adresse IP, sauf si vous utilisez SNI, qui ne fonctionne pas sur tous les navigateurs (ancien android, blackberry 6, etc.).
Vous ne devez pas héberger de contenu externe sur vos pages qui ne passe pas par SSL.
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.
la source
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 familierhttp://
. Voir également cette réponse:Pourquoi ne pas toujours utiliser https lors de l'inclusion d'un fichier js?
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source