Qui se souvient de ce qu’est un cookie ?
|J’entends régulièrement parler des cookies (je ne parle pas de gateaux ici) mais il m’a semblé de la plupart des personnes qui en parlent ont oublié, ou n’ont jamais su, d’où ça vient, à quoi ça sert et comment cela peut être utilisé. Permettez-moi d’en faire un petit rappel…
D’où ça vient ?
Le protocole http : il a été inventé à l’époque où l’objectif était simplement de télécharger des documents et de naviguer des uns aux autres. Il n’était pas question de transactions en ligne et le protocole inventé s’est voulu simple.
Décrivons rapidement l’échange
- On tape une URL dans le navigateur : http://www.unsite.com/document.htm
- “http://” indique au navigateur d’utiliser le protocole http
- le navigateur fait un appel DNS pour avoir la traduction de www.unsite.com en adresse IP (disons 10.10.10.10)
- il se connecte à 10.10.10.10 sur le port 80 (le port du protocole http)
- envoi une commande “GET /document.htm”
- reçoit la réponse du serveur (le contenu du document)
- il ferme la connection
- il interprète le contenu du document html et va chercher les éléments connexes de la page (images, feuilles de style, etc.)
- pour chaque élément de la page, il effectue la même opération (ouverture de la connection, envoi de la commande GET, réception de la réponse, fermeture de la connexion)
Comme vous avez pu le voir, le protocole http considère que chaque demande est nouvelle, c’est un protocole “pauvre” qui ne maintient pas de session (même le protocole d’échange du minitel était plus riche 😉 ). Il est largement suffisant pour aller chercher une page html ou une image mais ce manque de session pose un problème lorsque l’on est dans une application, il ne permet même pas de maintenir la connexion d’un internaute ayant tapé un login / mot de passe.
Pour pallier ce manque du protocole http, des solutions ont été imaginées au travers des cookies. Un cookie est une chaîne de caractère envoyée par le serveur à la première connexion au navigateur. Elle est ensuite renvoyée par le navigateur avec chaque commande “GET” au serveur.
Utilisation “standard”
Une application typique génère un contexte à la première connexion d’un internaute associé à un identifiant. Il envoie l’identifiant du contexte au navigateur qui le lui renvoie à chaque requête. Ce système permet de gérer une session et de suivre les actions de l’internaute au fil des pages qu’il parcourt. Ce mode est indispensable pour gérer un panier d’achat ou conserver en mémoire que Mr Durand s’est identifié sur le site. Le langage PHP, par exemple, met en oeuvre ce type de fonctionnement en générant un cookie PHPSESSID.
Un cookie a une durée de vie paramétrable
- session : la durée de vie est limitée à la session du navigateur. Des que le navigateur est fermé, le cookie est détruit (en fait, il n’est pas détruit, il n’est plus envoyé par le navigateur, ce qui revient au même). En revanche, tant que le navigateur n’est pas fermé, il subsiste, y compris si le navigateur reste ouvert plusieurs jours.
- date fixe : le cookie sera utilisé en envoyé au serveur jusqu’à la date donnée si il n’a pas été détruit entre temps. Il n’y a pas de limite à la durée de vie paramétrée du cookie
Les usages standards sont donc
- la gestion des sessions pendant la navigation sur un site
- la mémorisation d’un choix d’utilisateur dans son navigateur (la langue d’un site par exemple ou une information de localisation géographique)
- toute information qui nécessite d’être conservée le temps qu’on quitte le site et qu’on y revienne (cas du transfert vers un prestataire de paiement par exemple)
Une limitation essentielle du cookie est qu’il est associé à un domaine et un chemin. Si le domaine est blog.grossiord.net et le chemin /, le cookie pourra être lu uniquement pas le serveur blog.grossiord.net à l’exclusion de tout autre serveur par tout chemin sur le site. Si le chemin était /test/, le cookie ne sera envoyé qu’aux pages sous /test/ et non envoyées aux pages dans /test2/. Le domaine peut être utilisé avec une wildcard *.grossiord.net, dans ce cas, il sera lisible par tous les serveurs du domaine grossiord.net (www.grossiord.net, blog.grossiord.net, etc.)
Utilisation “détournée”
La première utilisation “détournée” est effectuée par les outils de web analytics. Ils se servent des cookies pour reconstituer le parcours d’un internaute mais également faire la différence entre les nouveaux internautes et les internautes réguliers, etc.
Si l’outil de web analytics pose un cookie depuis le domaine hôte (dans le cas de ce blog, un cookie est déposé depuis le domaine blog.grossiord.net), ce cookie est dit “first part”.
Il existe par contre des outils qui posent des cookies depuis leur propre domaine, “third part”, qui deviennent lisibles depuis tout site internet qui utilise cette même technologie. Cela permet de comprendre le trafic commun entre deux sites ou d’attribuer les ventes au bon apporteur de trafic dans le cas de l’affiliation.
L’utilisation de ce type de cookies peut être très puissante mais nécessite d’être faite de manière raisonnée et clairement explicitée pour protéger la vie privée des internautes.