Web11 : Cookies HTTP et quelques problèmes de sécurité

Web11 : Cookies HTTP et quelques problèmes de sécurité

1. Introduction

Un cookie , ou cookie HTTP, cookie Web, cookie de navigateur, est un petit élément de données envoyé depuis le site Web et stocké dans le navigateur de l'utilisateur lorsqu'il navigue sur ce site Web. Chaque fois qu'un utilisateur charge un site Web, le navigateur envoie automatiquement des cookies au serveur Web pour informer le site Web des actions précédentes de l'utilisateur.

Les cookies sont conçus pour être un mécanisme fiable qui aide les sites Web à mémoriser des informations de statut (telles que les articles dans le panier) ou à stocker les activités des utilisateurs (y compris les clics) : un lien, une connexion, les pages visitées au cours de la semaine, du mois ou de l'année,... ).

Bien que les cookies ne puissent pas véhiculer de virus ni installer de logiciels malveillants sur votre ordinateur, l'utilisation de cookies de suivi et notamment de cookies tiers est considérée comme un moyen d'identifier des informations personnelles à partir de l'historique de navigation des utilisateurs. Les cookies peuvent enregistrer les mots de passe ou le contenu que les utilisateurs saisissent dans les formulaires HTML, tels que les numéros de carte de crédit ou les adresses personnelles.

Lorsqu'un utilisateur visite un site Web pour la première fois, un cookie est envoyé du serveur Web au navigateur et stocké sur son ordinateur. Ensuite, lorsqu'il reviendra sur le site Internet, celui-ci le reconnaîtra grâce aux informations enregistrées dans le cookie.

Les cookies d'authentification sont une méthode couramment utilisée pour déterminer si un utilisateur est connecté ou non à un site Web. Sans un tel mécanisme, il sera difficile pour le site Web de savoir quand envoyer des informations personnelles à l'utilisateur et de forcer l'utilisateur à se connecter plusieurs fois. Les cookies d'authentification, bien que très pratiques, créent des opportunités pour les pirates informatiques de lire des données sensibles contenues dans les cookies, effectuant ainsi des actions qui nuisent aux utilisateurs.

2. Présentation des cookies HTTP

2.1. Histoire

Le terme cookie est dérivé du terme cookie magique, qui est une donnée immuable envoyée et reçue par un programme informatique. Un programmeur nommé Lou Montuli a eu l'idée d'utiliser des cookies magiques dans les communications Web en 1994. À cette époque, il travaillait pour Netscape Communications, sur un projet de développement d'applications de commerce électronique pour MCI. Les cookies ont été utilisés comme solution pour créer des paniers d'achat virtuels, aidant les serveurs de MCI à ne pas avoir à enregistrer l'état des transactions mais à les stocker sur l'ordinateur de l'utilisateur.

Avec John Giannandrea, Montuli a écrit la première spécification pour les cookies Netscape. La version 0.0beta de Mosaic Netscape, publiée le 13 octobre 1994, prenait en charge les cookies. La première utilisation des cookies (en dehors du laboratoire) a permis de vérifier si un client visitant le site Web de Netscape l'avait déjà visité ou non. Montuli a obtenu un brevet sur les cookies en 1995. Et la version 2 d'Internet Explorer (publiée en octobre 1995) incorporait l'utilisation de cookies.

L'introduction de cookies n'était pas très répandue à cette époque. En particulier, les cookies sont acceptés par défaut, les utilisateurs ne sont pas avertis de leur présence. Le public n’a entendu parler des cookies qu’après la publication d’un article à leur sujet dans le Financial Times le 12 février 1996. Depuis lors, les cookies ont reçu beaucoup d’attention, notamment les informations privées qu’ils contiennent. Les cookies ont été discutés lors de deux audiences de la Federal Trade Commission américaine en 1996 et 1997.

La première discussion sur une spécification formelle des cookies a commencé en avril 1995. Un groupe spécial au sein de l'Internet Engineering Task Force (IETF) a été formé dans le but de mener à bien ce travail. Finalement, la spécification a été publiée par le groupe en février 1997. La spécification définissait les cookies tiers comme étant soit inacceptables pour tous, soit du moins non activés par défaut.
En avril 2011, la spécification standard pour les cookies utilisés en pratique a été publiée dans le document RFC 6265 .

2.2. Terminologie

Cookies de session

Les cookies de session, également appelés cookies en mémoire ou cookies transitoires, n'existent que dans la mémoire temporaire pendant que l'utilisateur navigue sur le site Web. Si une date d'expiration ou un intervalle de validité n'est pas défini au moment de la création du cookie, un cookie de session sera défini. Normalement, les navigateurs Web suppriment automatiquement les cookies de session lorsque l'utilisateur ferme le navigateur.

Cookies persistants

Les cookies persistants prolongent la session de l'utilisateur. Si un cookie persistant est défini sur une durée maximale de 1 an, pendant cette période, la valeur initiale définie dans le cookie sera envoyée au serveur chaque fois que l'utilisateur visite le site Web. Il peut être utilisé pour enregistrer des informations importantes, telles que la manière dont l’utilisateur a visité le site Web pour la première fois. C'est pour cette raison que les cookies persistants sont également appelés cookies de suivi.

Cookies sécurisés

Le cookie sécurisé est un attribut de sécurité activé lors de l'utilisation de HTTPS, garantissant que le cookie est toujours crypté lorsqu'il est transféré du client au serveur, l'aidant ainsi à éviter les écoutes clandestines et la révélation d'informations. De plus, tous les cookies doivent être conformes à la politique de même origine du navigateur.

Cookies HttpUniquement

L'attribut HttpOnly des cookies est pris en charge par la plupart des navigateurs. Un cookie de session HttpOnly ne sera utilisé que dans une seule requête HTTP (ou HTTPS), limitant ainsi l'accès aux API non HTTP telles que Javascript. Cette restriction atténue mais n'élimine pas le vol de cookies via les vulnérabilités XSS (Cross-site scripting).

Cookies tiers

Les cookies propriétaires sont des cookies appartenant au même domaine (ou à des sous-domaines au sein du même domaine) affichés dans la barre d'adresse du navigateur. Les cookies tiers sont des cookies appartenant à différents domaines affichés dans la barre d'adresse du navigateur. Les sites Web peuvent contenir du contenu provenant de domaines tiers (tels que des bannières publicitaires), à partir duquel l'historique de navigation des utilisateurs peut être suivi. Les paramètres de confidentialité de la plupart des navigateurs bloquent les cookies de suivi tiers.

Par exemple, supposons qu’un utilisateur visite le site Web example1.com . Ce site Web contient une publicité de ad.foxytracking.com. Une fois chargés, les cookies de ad.foxytracking.com seront enregistrés. Il visite ensuite un autre site Web (exemple2.com), qui contient également une annonce de ad.foxytracking.com, et installe également un cookie appartenant à ad.foxytracking.com. Enfin, ces deux cookies seront envoyés à l'annonceur lors du chargement des annonces ou de l'accès à son site Internet. Les annonceurs peuvent utiliser ces cookies pour créer l'historique de navigation d'un utilisateur sur tous les sites Web contenant leurs annonces.

En 2014, quelques sites Web installaient des cookies pouvant être lus par plus de 100 domaines tiers. En moyenne, un site Web aura environ 10 cookies définis, avec un nombre maximum de cookies supérieur à 800.

Supercookie

Un supercookie est un cookie provenant d'un domaine de premier niveau, tel que .com, ou d'un suffixe public, tel que .co.uk. Il est important que les supercookies soient bloqués par les navigateurs en raison de certains problèmes de sécurité. S'il est débloqué, un attaquant contrôlant un site Web malveillant peut configurer un supercookie pour usurper l'identité des demandes des utilisateurs, envoyant des demandes à d'autres sites Web partageant le même domaine de premier niveau ou le même suffixe public. Par exemple, un supercookie provenant du domaine .com pourrait nuire aux requêtes adressées à example.com, même si le cookie ne provenait pas de example.com. Il peut être exploité pour falsifier les connexions ou modifier les informations des utilisateurs.

Biscuits zombies

Les cookies zombies sont des cookies qui sont automatiquement recréés après leur suppression par l'utilisateur. Cela est effectué par un script qui stocke le contenu du cookie dans un autre emplacement, tel qu'un magasin de contenu Flash, un magasin HTML5 ou un autre mécanisme côté client.

2.3. Structure des cookies

Un cookie d'une taille de 4 Ko, comprend 7 composants principaux :

  1. Nom
  2. Valeur
  3. Expire (date d'expiration)
  4. Chemin (chemin vers l'endroit où le cookie est valide, "/" signifie que le cookie est valide sur n'importe quel chemin)
  5. Domaine
  6. Sécurisé
  7. Http uniquement

Les deux premiers composants (nom et valeur) sont obligatoires.

2.4. Utiliser

Gestion des séances

Les cookies peuvent être utilisés pour conserver les données relatives aux utilisateurs lors de plusieurs visites de sites Web. Les cookies sont une solution permettant de créer un panier, un panier virtuel qui aide les utilisateurs à sauvegarder les articles qu'ils choisissent lors de leur navigation parmi les produits.

Les applications de panier d'achat actuelles stockent souvent la liste des articles du panier dans la base de données côté serveur au lieu de la stocker dans un cookie côté client. Le serveur Web enverra normalement un cookie contenant l'identifiant de session - ID de session (qui est unique). Le navigateur Web renverra cet identifiant de session avec la demande d'achat de chaque utilisateur.

Permettre aux utilisateurs de se connecter à des sites Web est une autre application des cookies. Normalement, lors de la première connexion, le serveur Web enverra au client un cookie contenant l'ID de session. Les utilisateurs soumettront leurs informations et l'application Web authentifiera la session, puis permettra à l'utilisateur d'utiliser ses services.

Les cookies fournissent un mécanisme d'interaction client/serveur rapide et pratique. L'un des avantages des cookies est qu'ils stockent les informations de l'utilisateur dans un fichier situé sur l'ordinateur de l'utilisateur. Cela réduit considérablement l'espace de stockage et le temps de traitement du serveur.

Personnalisé

Les cookies peuvent être utilisés pour mémoriser les informations personnelles d'un utilisateur lorsqu'il visite un site Web, afin d'afficher un contenu plus pertinent à cet utilisateur chaque fois qu'il visite à nouveau le site Web.

Un exemple frappant est la fonctionnalité de recommandation de livres d'Amazon.com. Lorsqu'un utilisateur clique sur un livre, Amazon lui fera des suggestions sur les prochains livres que l'utilisateur devrait consulter. Ces suggestions sont basées sur les livres que les utilisateurs ont déjà consultés et sur les livres qu'ils ont choisi d'acheter.

Un autre exemple est la fonctionnalité de suggestion de recherche de Google Search. Lorsque vous vous connectez avec votre compte personnel et effectuez une recherche, Google vous proposera des suggestions « juste pour vous » et les résultats souhaités apparaîtront toujours en haut de la liste.

Moniteur

Les cookies de suivi peuvent être utilisés pour suivre l'historique de navigation d'un utilisateur. Cela peut également être fait en utilisant l'adresse IP de l'ordinateur qui envoie la requête au site Web ou en s'appuyant sur le champ Referrer de l'en-tête de la requête HTTP, mais les cookies apportent plus de précision. Cela se fait comme suit:

  1. Si un utilisateur visite un site Web, mais que cette demande ne contient pas de cookie, le serveur supposera que c'est la première fois que l'utilisateur visite ce site Web ; Le serveur générera une chaîne aléatoire et la renverra sous forme de cookie au navigateur avec la page Web demandée.
  2. À partir de ce moment, le cookie sera automatiquement envoyé par le navigateur au serveur chaque fois qu'une nouvelle page Web de ce site Web sera demandée, le serveur renverra la page Web demandée comme d'habitude, mais avec l'URL de cette page Web et le L'accès sera enregistré dans un fichier journal. En analysant les informations enregistrées dans ce fichier journal, l'historique de navigation de la personne, les sites Web fréquemment visités et les habitudes de navigation seront révélés.

2.5. Déploiement

Web11 : Cookies HTTP et quelques problèmes de sécurité

Les cookies sont des données envoyées du serveur au navigateur. Le navigateur le renverra ensuite au serveur sans modifier le contenu à l'intérieur, chaque fois que l'utilisateur enverra une demande au site Web. Les cookies peuvent également être définis par un langage de script, tel que Javascript.

Chaque navigateur Web peut stocker au moins 300 cookies dans un fichier de 4 Ko et au moins 20 cookies par serveur ou domaine.

Configurer les cookies

Le serveur Web et le navigateur communiquent entre eux via HTTP (HyperText Transfer Protocol). Par exemple, pour accéder à la page http://www.example.org/index.html, le navigateur se connecte au serveur en envoyant une requête HTTP comme celle-ci :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Le serveur répondra en envoyant au navigateur un simple paquet de texte, appelé réponse HTTP. Ce paquet peut contenir une ligne contenant le contenu du cookie :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Set-Cookie est un champ qui demande au navigateur de stocker le cookie et de l'envoyer au serveur à l'avenir chaque fois qu'il y aura une demande au serveur (si le cookie est toujours expiré). Par exemple, le navigateur envoie une requête à http://www.example.org/spec.html en envoyant une requête HTTP comme celle-ci :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Il s'agit d'une requête vers une autre page appartenant au même serveur. Dans ce cas, le serveur comprendra que cette demande est liée à la demande précédente et il répondra en envoyant la page Web demandée au navigateur, en ajoutant éventuellement d'autres valeurs de cookies.

La valeur du cookie peut être modifiée par le serveur en envoyant le champ Set-Cookie: name=value dans la réponse HTTP au navigateur. Le navigateur remplacera alors l'ancienne valeur du cookie par cette nouvelle valeur.

La valeur du cookie peut inclure n'importe quel caractère ASCII imprimable à l'exception de « », « ; » et un espace blanc. Les noms de cookies ne peuvent pas non plus contenir le caractère « = », car c'est le caractère qui sépare le nom et la valeur.
Le terme cookie crumb est parfois utilisé pour désigner la paire nom-valeur d'un cookie.

Les cookies peuvent également être définis par Javascript ou un langage de script similaire. En Javascript, l'objet document.cookie est utilisé pour définir les cookies. L'attribut HttpOnly est chargé d'empêcher les mauvais scripts de lire le contenu des cookies.

Propriétés des cookies

Outre la paire nom-valeur, le serveur peut également définir un certain nombre d'autres propriétés de cookie : Domaine, Chemin, Expirse, Max-Age, Secure et HttpOnly. Le navigateur n'enverra pas ces attributs au serveur, il enverra uniquement la paire nom-valeur. Ces attributs sont utilisés par le navigateur pour déterminer quand supprimer les cookies, bloquer les cookies ou envoyer des cookies au serveur.

Domaine et chemin

Le domaine et le chemin déterminent la portée du cookie. Ils permettent au navigateur de déterminer quand envoyer des cookies au serveur. S'ils ne sont pas spécifiés, ils sont par défaut le domaine et le chemin de l'objet demandé. Cependant, il existe une différence entre un cookie défini pour foo.com sans l'attribut de domaine et un cookie défini avec l'attribut de domaine foo.com. Dans le premier cas, le cookie ne sera envoyé que lorsqu'il y aura une demande à foo.com. Dans ce dernier cas, le cookie sera envoyé à tous les sous-domaines de foo.com. Voici un exemple de directive Set-Cookie provenant d'un site Web après la connexion de l'utilisateur, à partir d'une requête adressée à docs.foo.com :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Le premier cookie LSID n'a pas d'attribut de domaine et a le chemin /accounts. Le navigateur n'enverra des cookies que lorsque la page demandée sera contenue dans docs.foo.com/accounts. Les deux cookies restants, HSID et SSID, sont renvoyés au serveur s'il y a une demande vers un sous-domaine de foo.com.
Les cookies peuvent également être définis uniquement pour le domaine principal et ses sous-domaines. L'installation de cookies sur www.foo.com à partir de www.bar.com ne sera pas autorisée pour des raisons de sécurité.

Expire et âge maximum

L'attribut Expires indique au navigateur quand supprimer le cookie. La date dans Expire ressemble à ceci : « Wdy, DD Mon YYYY HH:MM:SS GMT ». Max-Age est également utilisé pour indiquer la date d'expiration d'un cookie. Considérons l'exemple suivant :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Le premier cookie expire le 15 janvier 2013 et sera utilisé par le navigateur à cette date. Le deuxième cookie made_write_conn n'expire pas et est utilisé comme cookie de session, il sera supprimé lorsque le navigateur sera éteint. Le troisième cookie, reg_fb_gate, a une date d'expiration dans le passé, il sera immédiatement supprimé.

Sécurisé et HttpOnly

Les propriétés Secure et HttpOnly sont nulles ; leur présence indique que les bases Secure et HttpOnly sont appliquées.

L'attribut Secure maintient la transmission des cookies au sein d'une connexion cryptée. Si le serveur Web définit un cookie avec l'attribut sécurisé à partir d'une connexion non sécurisée, le cookie peut toujours être intercepté par une attaque de l'homme du milieu.

L'attribut HttpOnly demande au navigateur de ne pas exposer les cookies via une connexion autre que HTTP (ou HTTPS), comme Javascript, et rend donc difficile l'obtention de cookies en exploitant les vulnérabilités Cross-Site Scripting (XSS).

3. Quelques problèmes de sécurité lors de l'utilisation de cookies

Si un site Web utilise un identifiant de session pour identifier la session d'un utilisateur, un attaquant pourrait potentiellement voler le cookie pour usurper l'identité de l'utilisateur. Voici quelques scénarios courants de vol de cookies :

Écoute clandestine

Web11 : Cookies HTTP et quelques problèmes de sécurité

Le trafic sur un réseau peut être intercepté et lu par un tiers (autre que le destinataire et l'expéditeur). Ce trafic inclut les cookies. Si la transmission n'est pas cryptée, un attaquant peut lire les informations sensibles contenues dans le cookie. Et profitant de ces informations, les attaquants usurperont l’identité des utilisateurs pour effectuer des actions dangereuses, telles que des transactions bancaires.

Ce problème peut être résolu en utilisant un protocole sécurisé entre l'ordinateur de l'utilisateur et le serveur : le protocole HTTPS. Le serveur peut utiliser l'indicateur Secure lors de la configuration des cookies. Le cookie sera alors envoyé uniquement via un canal crypté, tel qu'une connexion SSL.

Scripts intersites

Web11 : Cookies HTTP et quelques problèmes de sécurité

Les langages de script, tels que Javascript, sont autorisés à lire les valeurs des cookies et à les envoyer à des serveurs arbitraires.

Supposons qu'un site Web présente une erreur de script intersite, les pirates peuvent insérer du code malveillant, tel que le suivant :

Web11 : Cookies HTTP et quelques problèmes de sécurité

Lorsque la victime clique sur le lien ci-dessus, le navigateur exécutera le script dans l'attribut onclick : envoyant le cookie de la victime au serveur attaquant.com.

Le cross-site scripting est l'une des vulnérabilités courantes des sites Web (classée au troisième rang des 10 vulnérabilités les plus courantes en 2013 - selon l'OWASP).

Le risque de cette vulnérabilité peut être limité en définissant l'indicateur HttpOnly pour les cookies. À ce moment-là, les langages de script ne pourront pas accéder aux cookies.

Falsification de requêtes intersites

CSRF (Cross-site request forgery) ou attaque en un clic, est une méthode d'exploitation des vulnérabilités d'un site Web par laquelle des commandes non autorisées sont exécutées par des victimes - des utilisateurs autorisés par le site Web à leur insu.

CSRF incitera le navigateur de la victime à envoyer des requêtes http aux applications Web. Dans le cas où la session de la victime n'a pas expiré, les demandes ci-dessus seront effectuées avec les droits d'authentification de la victime.

Par exemple, la victime Bob effectue des transactions sur le site Internet d'une certaine banque X. Fred est l'attaquant, ce type sait comment fonctionne le site Web de la banque X lorsqu'il veut transférer de l'argent du compte A vers le compte B comme suit :

http://bank.example.com/withdraw?account=accountA&amount=100&for=accountB

Il enverra à Bob un message malveillant.

Si la banque X stocke les informations d'authentification de l'utilisateur dans un cookie et que Bob clique sur le lien ci-dessus, l'argent de Bob sera transféré à Fred.

Pour limiter ce risque, des paramètres d'expiration peuvent être définis pour les cookies.

4. Conclusion

Les cookies sont aujourd’hui utilisés dans la plupart des applications Web. Il contient également des risques potentiels, affectant considérablement les utilisateurs. Par conséquent, du côté du développeur, nous devons bien comprendre les cookies et savoir définir les paramètres nécessaires pour que l'application soit plus sûre contre les attaques de pirates.


Comment supprimer lavis de demande de droit dauteur dans le coin droit de lécran sous Windows 10

Comment supprimer lavis de demande de droit dauteur dans le coin droit de lécran sous Windows 10

Voyez-vous une notification d’activation de Windows 10 dans le coin droit de l’écran ? Cet article vous expliquera comment supprimer l'avis de demande de droit d'auteur sous Windows 10.

Instructions de A à Z sur la façon dinstaller Windows 10 build 14393.222

Instructions de A à Z sur la façon dinstaller Windows 10 build 14393.222

Récemment, Microsoft a publié la dernière mise à jour cumulative pour les utilisateurs de PC Windows 10, appelée Build 14393.222. Cette mise à jour publiée pour Windows 10 corrige principalement des bugs basés sur les commentaires des utilisateurs et améliore l'expérience de performances du système d'exploitation.

Protégez votre réseau informatique avec lhôte Bastion en seulement 3 étapes

Protégez votre réseau informatique avec lhôte Bastion en seulement 3 étapes

Avez-vous des ordinateurs sur votre réseau local qui nécessitent un accès externe ? Utiliser un hôte bastion comme gardien de votre réseau peut être une bonne solution.

Comment créer une touche Windows si votre clavier nest pas disponible

Comment créer une touche Windows si votre clavier nest pas disponible

Si vous préférez utiliser un vieux clavier classique, comme l'IBM Model M, qui n'inclut pas de touche Windows physique, il existe une méthode simple pour en ajouter davantage, en empruntant une touche que vous n'utilisez pas souvent.

3 façons deffacer rapidement tous les journaux dévénements dans Windows 10

3 façons deffacer rapidement tous les journaux dévénements dans Windows 10

Parfois, vous devrez peut-être supprimer d’un seul coup les anciens journaux d’événements. Dans ce guide, Quantrimang.com vous montrera 3 façons de supprimer rapidement tous les journaux d'événements dans l'Observateur d'événements Windows 10.

Les fausses méthodes IP vous aident à accéder de manière anonyme

Les fausses méthodes IP vous aident à accéder de manière anonyme

Dans de nombreux articles précédents, nous avons mentionné qu’il est extrêmement important de rester anonyme en ligne. Des informations privées sont divulguées chaque année, ce qui rend la sécurité en ligne de plus en plus nécessaire. C'est aussi la raison pour laquelle nous devrions utiliser des adresses IP virtuelles. Ci-dessous, nous découvrirons les méthodes pour créer de fausses IP !

Comment créer un mode darrière-plan transparent sur Windows 10

Comment créer un mode darrière-plan transparent sur Windows 10

WindowTop est un outil qui a la capacité d'atténuer toutes les fenêtres d'application et tous les programmes exécutés sur les ordinateurs Windows 10. Vous pouvez également utiliser une interface à fond sombre sur Windows.

Comment désactiver la barre de langue sur la barre des tâches de Windows 8

Comment désactiver la barre de langue sur la barre des tâches de Windows 8

La barre de langue sous Windows 8 est une barre d'outils de langue miniature conçue pour s'afficher automatiquement sur l'écran du bureau. Cependant, de nombreuses personnes souhaitent masquer cette barre de langue dans la barre des tâches.

Comment configurer WEP, WPA, WPA2 pour le routeur Linksys

Comment configurer WEP, WPA, WPA2 pour le routeur Linksys

La connectivité sans fil est aujourd’hui une nécessité et pour cette raison, la sécurité sans fil est essentielle pour garantir la sécurité de votre réseau interne.

Conseils pour optimiser la vitesse de connexion Internet de Linksys

Conseils pour optimiser la vitesse de connexion Internet de Linksys

Maximiser la vitesse d’Internet est essentiel pour optimiser votre connexion réseau. Vous pouvez vivre une expérience de divertissement et de travail optimale en utilisant des ordinateurs, des téléviseurs connectés à Internet, des consoles de jeux, etc.