Pour les gens normaux, un cookie, c'est un petit biscuit anglais. Pour les informaticiens, ce terme désigne - sur Internet - une information qu'un site web dépose à l'insu de votre plein gré sur votre ordinateur. Cette information est stockée dans un ou plusieurs fichier(s) texte.
Cette page va donc vous expliquer le principe des cookies, quels sont les cookies dangereux, et comment réaliser ses propres cookies en JavaScript.
Comme vous pouvez le constater, il est très facile de garder une trace de vous. Si vous avez consulté la page Le JavaScript, vous savez également que je peux connaître diverses informations telles que votre navigateur, la résolution de votre écran.
[haut de page]Un cookie est identifié par son nom, et contient une valeur. Par exemple, le cookie que j'ai déposé sur votre ordinateur s'appelle cavinfo. Sa valeur est une chaîne composée de la date de la première visite, suivie d'un dièse #, puis du nombre de visites, suivi d'un second dièse, et enfin du nom que vous avez écrit dans la boîte de dialogue.
Je parse la chaîne de caractères en me servant du caractère dièse comme séparateur.
[haut de page]Non seulement effacer régulièrement les cookies n'est pas dangereux, mais c'est même recommandé. La principale conséquence de ce nettoyage : tous ces sites qui se "souviennent" de vous deviendront brusquement amnésiques. Par exemple, si vous revenez sur cette page, les informations de vos passages précédents auront disparu.
Allez dans le menu Outils / Options Internet, et cliquez sur le bouton "effacer les cookies".
Allez dans le menu Editions / Préférences et choisissez l'onglet Confidentialité et sécurité / Cookies. Cliquez sur le bouton "gérer les cookies mémorisés". La boîte de dialogue qui s'ouvre vous montrera tous les cookies présents sur votre ordinateur. Effrayant. Cliquez ensuite sur "Supprimer tous les cookies".
Allez dans le menu Fichiers et choisissez "supprimer les informations privées".
Les cookies sont stockés sous la forme de fichiers texte (un fichier par cookie) dans un répertoire Cookies. Vous remarquerez aussi le fichier index.dat ; ce n'est pas un cookie, et il est protégé en écriture. L'emplacement du répertoire des cookies dépend de la version de Windows que vous utilisez :
Netscape stocke les cookies dans un seul fichier texte, cookies.txt. Cet emplacement varie selon les versions de Netscape et du système d'exploitation.
L'ancien Netscape 4 stocke, sous Windows 95/98/Me, les cookies dans C:\Program Files\ Netscape\ Users\ default\ cookies.txt. Sous Linux, le fichier texte se trouve dans le répertoire caché .netscape, son nom est ~/.netscape/ cookies.txt.
Netscape 7 sous Windows 2000/XP stocke les cookies dans votre répertoire personnel C:\Documents and Settings\ votrelogin\ Application Data\ Mozilla\ Profiles\ votreprofil\ cookies.txt.
De manière générale, rechercher "cookie" vous permettra de repérer ces fichiers.
Comme Netscape, Opera utilise un seul fichier pour stocker les cookies ; ce fichier est cookies4.dat. Une fois de plus, l'emplacement de ce fichier dépend du système d'exploitation et de la version d'Opera.
Opera 7 sous Windows 2000/XP conserve ce fichier dans C:\Documents and Settings\ votrelogin\ Application Data\ Opera\ Opera7\ profile\ cookies4.dat.
[haut de page]Mal utilisés, les cookies peuvent représenter une menace pour la vie privée. Bien entendu, ils n'ont pas été conçus dans ce but. Quel est donc l'intérêt des cookies ?
Certaines catégories de sites web nécessitent une garantie de votre identité. Par exemple, les messageries électroniques consultables par le web (caramail, yahoo, voila, hotmail, ...). Lors de votre connexion, une fois que vous avez rentré un mot de passe valide, le site dépose un cookie contenant un identifiant unique. C'est un identifiant de session. Ce numéro est unique et expire dès la fin de la session. Il sert à s'assurer que vous êtes bien qui vous prétendez être, et que vous avez le droit de consulter vos mails.
Plusieurs sites vous proposent des services personnalisés. La couleur de l'arrière-plan, la barre de menu, la météo que vous souhaitez afficher. Par exemple, le moteur Google vous propose de mémoriser dans quelle langue vous souhaitez effectuer des recherches. Pour cela, il stocke cette information dans un cookie.
Les auteurs de sites aiment savoir comment vous êtes arrivés sur leur site (par un moteur de recherche, par un site partenaire, ...), le nombre de pages que vous avez vues, etc... Il existe de nombreux services de statistiques gratuits, et beaucoup de webmasters y font appels. Ces services de statistiques utilisent des cookies.
S'il s'agit d'un passe-temps pour les webmasters amateurs, ce genre d'informations devient vital pour les sites marchands. Comprendre le parcours des internautes, pourquoi telle page est sur-demandée et telle autre n'est jamais consultée, est nécessire à la bonne marche du site.
Dans notre monde gangréné par la publicité, le problème des annonceurs consiste à cibler les acheteurs potentiels. Quel est l'intérêt de faire apparaître une publicité de crème épilatoire sur l'ordinateur d'un internaute masculin ?
La technique généralement utilisée consiste à vous faire remplir un sondage quelconque. Parmi les informations recueillies, votre sexe, votre âge, votre profession, vos revenus. Une fois ces informations connues des publicitaires, vous aurez plus de chance de voir des publicités "qui vous correspondent".
Comme tout le monde ne remplit pas des formulaires, il y a plus vicieux. Si, dans un annuaire (par exemple Yahoo), vous visitez les pages consacrées aux automobiles par exemple, le site déposera un cookie sur votre ordinateur afin de mémoriser que vous aimez bien visiter les pages consacrées aux automobiles. Ensuite, il y a des chances pour que vous voyez une proportion plus importante de publicités automobiles.
[haut de page]Pour se protéger, trois solutions :
Si aucune de ces solutions ne vous convient, il reste une alternative acceptable : après chaque connexion à Internet, supprimez tous vos cookies. Bien sûr, on vous suivra toujours à la trace, mais sur une ou deux heures (au lieu de plusieurs mois). Si vous ne disposez pas d'une IP fixe, comme tous ceux qui sont connectés par un fournisseur d'accès, il sera impossible de faire le lien avec votre connexion précédente.
[haut de page]Un cookie est une chaîne de caractères organisée de la manière suivante :
Nom=Valeur; Expires=Date d'expiration; (par défaut : fin de la session) Path=URL pour lequel le cookie est valide (par défaut : répertoire courant) Domain=Domaine pour lequel le cookie est valide (par défaut : serveur courant) Secure=Oui/Non, la transmission du cookie doit être sécurisée (par défaut : Non)
Tous les champs qui ne sont pas remplis prennent leur valeur par défaut. Les seules données indispensables sont le nom du cookie, qui servira à l'identifier, et la valeur à stocker dans ce cookie. Lorsque la date d'expiration d'un cookie est atteinte, celui-ci est effacé de votre ordinateur.
[haut de page]Il existe deux manières de fixer un cookie sur votre ordinateur :
Le protocole HTTP permet d'échanger des documents web (pages web, images, et fichiers). Il est composé de requêtes (le client demande au serveur un fichier, le serveur lui répond ok si tout va bien, ou erreur sinon. Voici un exemple de requête HTTP reçue en se connectant au site de Yahoo.
HTTP/1.0 200 OK Date: Thu, 16 Nov 2000 11:24:13 GMT Cache-Control: private Expires: Thu, 16 Nov 2000 11:24:13 GMT Connection: close Content-Type: text/html Set-Cookie: B=85n20rijc; expires=Thu, 15 Apr 2010 20:00; path=/ ; domain=.yahoo.com;
Ce n'est pas très dur à comprendre : le serveur renvoie le code 200 OK, donc tout va bien. Il renvoie la date, diverses informations, le type de données transmises (du texte html).
Regardez la dernière ligne ! Regardez ce que Yahoo essaie de vous refiler à l'insu de votre plein gré ! On vous donne un numéro, pour vous ficher. La date d'expiration est fixée en 2010 (on a le temps), et ce cookie sera valable sur tous les sites liés à Yahoo... Ce qui signifie que le navigateur renverra la valeur du cookie (ici, votre numéro 85n20rijc) à chaque fois que vous consulterez une page Yahoo.
Une manière simple de fixer un cookie par requête HTTP est d'utiliser un langage de scripts s'exécutant côté serveur tel que PHP. Ce langage dispose d'une fonction setcookie qui s'emploie comme suit :
<? setcookie( "nom_cookie", "valeur", date_expiration, "path", "domain", sécurisé ); ?>
Le navigateur renvoie à chaque fois la valeur du cookie, c'est pourquoi il n'existe pas de fonction getcookie. Pour lire le cookie, il suffit de l'employer comme une simple variable.
Le JavaScript permet la manipulation des cookies très aisément grâce à la variable document.cookie. Cependant il est peu utilisé car il est très dur de renvoyer les informations au serveur. Généralement, on l'utilise pour sélectionner les adresses url des pubs à afficher dans une fenêtre popup - genre celle que vous vous tapez dès que vous consultez un site sur chez.com, multimania.fr, ifrance.com, etc... C'est le serveur qui ajoute le script automatiquement, les webmasters ne sont absolument pas complices de cette invasion publicitaire.
Un cookie est une chaîne de caractère définie par son nom et sa valeur. On peut aussi paramétrer sa date d'expiration et l'url de validité. Par habitude, on appelle setCookie une fonction permettant de fixer un cookie. Voici une fonction standard pour fixer un cookie.
/* Fixer un cookie */ function setCookie( name, value ) { var fin = new Date(); /* 15 jours de cookies */ fin.setTime( fin.getTime()+ 3600 * 1000 * 24 * 15 ); /* nom=valeur; expires=date; path=/ * escape() permet d'échapper les caractères spéciaux * (ex : 'espace' devient %20) */ var str=name+"="+escape(value)+"; expires="+fin.toGMTString()+"; path=/"; /* Enregistrement du cookie */ document.cookie = monCookie; }
Pour lire ou modifier un cookie déjà existant, il faut traiter document.cookie comme n'importe quelle autre chaîne de caractères. Les fonctions indexOf() (teste la première apparition d'une chaîne dans une autre) et substring() (découpe une chaîne) sont très utiles. Voici une fonction standard pour lire un cookie :
/* Lire un cookie */ function getCookie( name ) { /* On cherche le cookie grâce à son nom parmi tous les cookies */ var debut = document.cookie.indexOf( name ); /* Il n'existe pas */ if( debut == -1 ) return null; /* On recherche la fin du cookie */ var fin = document.cookie.indexOf( ";", debut+name.length+1 ); if( fin == -1 ) fin = document.cookie.length; /* On renvoie la valeur en la déséchappant */ return unescape( document.cookie.substring( debut+name.length+1, fin ) ); }[Haut de page]
Si vous avez apprécié (ou détesté) cet article ou ce site, vous avez la possibilité de donner une note d'évaluation et indiquer les points forts, les points faibles de ce site. Ce service est offert par l'institut de statistiques Weborama.
Eric Minso - novembre 2003 - La Caverne Informatique - http://cavinfo.fr.st/