Eric Lapaille. eric at netline.be

Les Cookies : c'est pas du gâteau

Proust vantait les charmes de ses madeleines, Netscape chante les vertus de ses cookies, ces petites pièces d'information stockées par un navigateur sur votre disque dur et qu'un serveur World Wide Web distant peut consulter . Intrusion dans votre vie privée ? Violation de votre intimité ?
Dangereuse faille au niveau de la sécurité de vos données ? Quels dangers se cachent réellement derrière ces biscuits anodins ?


Lorsque les programmeurs du navigateur Netscape ont développé leur programme, ils nous ont préparé une petite surprise pour le dessert : les cookies. Egalement connus comme persistent client state HTTP cookies ou magic cookies, ils n'ont de magique que le nom. . Un cookie, c'est simplement un nom auquel est associée une valeur. Un cookie est envoyé par un serveur HTTP vers votre navigateur qui place cette information dans un fichier du disque dur. A la prochaine connexion vers ce serveur, le navigateur renvoie au serveur l'information originale.

C'est une procédure très utile pour conserver une information pendant la visite d'un site Web comportant plusieurs pages. Le mécanisme est très prisé par les
vendeurs électroniques qui stockent sous forme de cookies tous les biens que vous désirez commander avant de vous présenter une facture finale globalisant tous vos achats.

Les cookies pallient une des lacunes du protocole HyperText Transport Protocol à savoir que HTTP ne conserve aucune information entre deux connexions.

Les spécifications complètes publiées par Netscape sur les cookies sont disponibles à l'adresse http://home.netscape.com/newsref/std/cookie_spec.html.

Pour créer un cookie, un serveur Web envoie une ligne d'information au navigateur commencant par le mot clé "Set-Cookie".
La ligne de commande complète ressemble à ceci :

Set-Cookie: NOM=VALEUR; expires=DATE; path=PATH; domain=DNAME; secure


NOM et VALEUR seront les informations stockées sous forme de cookies. La DATE est une date d'expiration après laquelle
le contenu du cookie sera ignoré par le navigateur. Elle doit répondre au formattage suivant : Wdy, DD-Mon-YY HH:MM:SS GMT

DNAME est le nom de la machine hôte ou du domaine à qui est destiné le cookie. PATH désigne un sous-ensemble d'URL auxquels le cookie est adressé. Si le mot clé secure est inclus dans la ligne de commande, le cookie ne sera transféré qu'à travers une connexion sécurisée par le protocole SSL (Secure Sockets Layer).
Exceptés le nom du cookie et sa valeur, tous les autres paramètres sont optionnels.

Lorsque le Netscape Navigator envoie une requête URL à un serveur pour lequel il a conservé des cookies, il lui adresse une ligne de commande supplémentaire sous la forme

Cookie: NAME=VALUE; NAME=VALUE; ...

Côté serveur, un minuscule programme répondant

 à la norme CGI (Common Gateway Interface ) suffit

 à envoyer un cookie.

 Un script pour un shell Unix donne ceci :


#!/bin/sh

echo "Content-type: text/html"

echo "Set-cookie: MyFavoriteMag=Computer%20Magasine;   expires=Thursday, 01-Jan-97 12:00:00 GMT"

echo ""

echo "<H1>Ni vu, ni connu, je vous ai envoy&eacute; un cookie</H1>"


Une fois l'information stockée sur le disque dur, il est possible de la retrouver grâce à la variable d'environnement HTTP_COOKIE


#! /bin/sh

echo "Content-type: text/html"

echo ""

echo "Voici votre cookie<P>"

echo "$HTTP_COOKIE<P>"


La société Netscape utilise ce mécanisme sur son site Web lorsque vous sélectionnez l'option "personnalisez votre page Web". Lorsque vous spécifiez au serveur
quelles sont vos préférences, le serveur les transmet sur votre disque dur sous forme de cookies. Lorsque vous vous reconnectez à nouveau chez Netscape, il récupère ces informations sur le disque dur pour retrouver la trace de vos préférences. Il s'agit d'une des manières les plus efficaces pour préserver l'état d'une connexion. Chaque client dispose ainsi de son propre cookie personnel et unique qui peut agir comme une signature personnelle pour le serveur de manière à éviter toute collision d'informations entre un client X et un client Y.

Quelques régies publicitaires officiant sur le Net, Focalink.com, ad.doubleclick.net ou interse.com, utilisent les cookies pour s'assurer que les utilisateurs reçoivent à chaque visite des publicités différentes. Certains webmasters se servent des cookies pour vérifier le chemin parcouru par un utilisateur avant d'arriver à une page HTML précise. S'ils s'aperçoivent ainsi qu'il faut plus de quatre ou cinq hyperliens avant de parvenir à la page finale, ils ont la possibilité de faciliter la navigation de leurs utilisateurs en modifiant l'arborescence de leur site.

Vous pouvez examiner le contenu de ce fichier comprenant tous vos cookies. Si vous disposez d'une machine Unix, vous le trouverez sous le nom "cookies" dans le répertoire .netscape en dessous de votre répertoire personnel. Sur un Macintosh, il se cache dans le dossier netscape sous le nom de MagicCookie.
Enfin, si vous êtes un utilisateur Windows, vous trouverez un fichier cookies.txt dans le même répertoire que le fichier exécutable netscape.exe. Voici le mien :

# Netscape HTTP Cookie File# http://www.netscape.com/newsref/std/cookie_spec.html#

This is a generated file!  Do not edit.www.kids.com	FALSE	/	FALSE	

946684799	voi-webwatch	30fbf18d-000e79c5-00007711.netscape.com	

TRUE	/	FALSE	946684799	NETSCAPE_ID	c65ffb1e,c6b0debb

Microsoft ne pouvait être en reste. Depuis Internet Explorer 3.0, un répertoire Cookies sous le répertoire principal Windows, reprend sous forme de fichiers séparés, l'ensemble des cookies échangés entre clients et serveurs Web avec comme nom de fichier le nom de domaine du serveur
et comme extension l'éternel .txt.

A raison d'une ligne par cookie, vous trouverez probablement dans le vôtre une première colonne désignant le nom de domaine du serveur qui vous a délivré ce
cookie et dans les dernières le nom et la valeur du cookie. Ce n'est pas une mauvaise idée d'en examiner le contenu manuellement car un navigateur Web ne vous avertit pas lorsqu'il place de tels cookies sur votre disque. Nombreux sont les auteurs de logiciels qui cherchent à savoir comment vous utilisez
leurs produits et qui sont prêts à garder trace de n'importe quoi sur votre disque.

Un navigateur, pour être conforme aux spécifications définies par Netscape, doit pouvoir conserver jusqu'à 300 cookies de 4 KiloOctets maximum chacun. Une fois cette limite dépassée, le navigateur doit supprimer le cookie le plus ancien. Netscape a également limité le nombre de cookies à 20 par nom de domaine.

Lorsqu'un programme serveur désire supprimer un cookie, il n'a pour seule solution que de créer un même cookie mais dont la date d'expiration est déjà passée.

Le fait qu'un programme puisse écrire des données sur un disque sans l'assentiment de son propriétaire a inquiété plus d'un spécialiste en sécurité.
Pour les rassurer, Netscape a ajouté une option dans son navigateur à partir de la version 3.0 beta 4 (Options/Network Preferences/Protocols) vous avertissant avant qu'un cookie ne soit placé sur votre disque.

Microsoft a aussitôt repris l'idée à son compte dans la version beta de son Internet Explorer 3.0 sous la rubrique Options/Security.

Si vous activez l'une ou l'autre de ces options sécurité, voici, à peu de choses près, le message d'alerte qui sera émis par le navigateur

Pour les plus paranos des utilisateurs Macintosh, je recommande un petit logiciel, baptisé Cookie Monster, réalisé
par Nicolas Berloquin. Disponible sur http://www.geocities.com/Paris/1778/monster.html,
Cookie Monster se charge de détruire les fichiers MagicCookie et cookies.txt au chargement de votre navigateur favori.

Si vous utilisez une version de Netscape antérieure à la version 3, une petite astuce vous permettra, à la hussarde,
d'éradiquer les cookies de votre disque dur. Dans le cas d'une version 16 bits, éditez le fichier NETSCAPE.INI et
remplissez la ligne

[Cookies] 
Cookie File=[path]cookies.txt 

par

[Cookies]
Cookie File=NUL

Il est possible d'obtenir le même résultat sous Windows 95 ou NT en éditant la base de données Registry
grâce à l'outil regedit.exe.

[HKEY_USERS\.Default\Software\Netscape\Netscape Navigator\Cookies]
 
"Cookie File"="[path]Cookies.txt" 

devient

[HKEY_USERS\.Default\Software\Netscape\Netscape Navigator\Cookies] 

"Cookie File"="NUL"

Ne tombez pas dans une parano excessive. Il est totalement impossible pour un serveur HTTP de lire sur votre disque des cookies qui ont été générés par un autre site. Même s'ils simplifient la programmation d'un site Web, les cookies ne font rien qui ne puisse être réalisé par une méthode ordinaire comme la programmation CGI ou les scripts. Inutile de tomber dans le sensationnalisme, les cookies sont finalement bien inoffensifs.