|
Un cookie est un ensemble d'infos stockés sur le disque de
l'utilisateur pour faciliter la navigation.
Il ne peut contenir que ce que l'utilisateur a bien voulu
donner. Les autres renseignements tels que l'adresse IP, le système d'exploitation ou le type
de navigateur utilisé sont connus indépendamment des cookies !
Exemple :
Mais jamais un cookie ne pourra récupérer à votre insu , par exemple,
votre adresse Émail (à moins
que vous ne la communiquiez explicitement dans un formulaire)
Un cookie est une information de type "texte" qui est
stockée, à l'aide d'un JavaScript, sur la machine du client, sous des
formes diverses suivant le navigateur utilisé (liste non exhaustive):
|
dans un fichier unique "cookiesx.dat" Ex. : P:\Program Files\Opera\cookies4.dat |
||
|
dans un fichier unique "cookie.txt" Ex. : Q:\Program Files\Netscape\Users\jcb_local\cookies.txt |
||
|
dans plusieurs fichiers (un par serveur) (sauf V3.0 sous
NT3.51) Ex. : E:\Documents and Settings\BELLAMY\Cookies\bellamy@springfield[1].txt |
||
Version IE | Version Windows | Répertoire | |
1.5 | NT | %systemroot%\cookie.jar | |
2.0 | Toutes | \Program Files\Plus!\Microsoft Internet\cookies.txt | |
3.0 | NT 3.51 | Répertoire d'installation de IE (Fichier emcookie.dat.) | |
95 | \Windows\Cookies\ <username>@<sitename>.txt | ||
NT | %systemroot%\Cookies\<username>@<sitename>.txt | ||
4.x | 9x | \%windir%\Cookies\ <username>@<sitename>.txt | |
NT | \%systemroot%\profiles\%username%\Cookies\ <username>@<sitename>.txt | ||
5.x 6.x |
9x | \%windir%\Cookies\ <username>@<sitename>.txt | |
NT | \%systemroot%\profiles\%username%\Cookies\ <username>@<sitename>.txt | ||
2000/XP | %userprofile%\Cookies\<username>@<sitename>.txt |
NB: tous les scripts (JavaScripts) présents dans ce document HTML sont librement utilisables et copiables !
Un nom (obligatoire)
défini dans le champ name, c'est une valeur alphanumérique quelconque
document.cookie=name+"="+value;
auquel peuvent s'ajouter d'autres paramètres facultatifs , à savoir :
Une date d'expiration
définie dans le champ expires, indique jusqu'à quelle date le cookie peut être utilisé. C'est une valeur date exprimée sous la forme Sun,JJ-MM-AA HH:MM:SS GMT, le jour de la semaine étant en anglais abrégé (Sun, Mon, Tue, ...)
Si on ne précise pas de date d'expiration, le cookie "meurt" à la fin de la session en cours du navigateur.
// date d'expiration le 1er Janvier de l'an 2000 :
var dateExp="Sat, 01-Jan-2000 08:00:00 GMT";
document.cookie=name+"="+value+";expires="+dateExp;La date est stockée dans le cookie sous la forme d'un nombre représenté en numérotation décimale.
Sous NETSCAPE :
C'est le nombre de secondes écoulées entre le 01/01/1970 à 00:00:00 GMT et la date d'expiration du cookie.
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.
springfield FALSE / FALSE 993942000 indexen 1
springfield FALSE / FALSE 993942000 lang frPar exemple, dans le cas d'un cookie expirant le 01/07/2001, sa date d'expiration est représentée par le nombre 993942000.
Si vous disposez du tableur Microsoft Excel, vous pouvez utiliser les formules suivantes pour convertir aisément une date codée en sa représentation explicite :
A Commentaires ou formules à écrire 1 993942000
Le nombre à expliciter 2 1
Le fuseau horaire GMT (en France : +1)
(heure d'été non observée)3 37071
=A1/86400+DATEVAL("01/01/1970")+TEMPSVAL(A2&":0:0") 4 29/6/2001 0:0:0 =JOUR(A3)&"/"&MOIS(A3)&"/"&ANNEE(A3)&" "&HEURE(A3)&":"&MINUTE(A3)&":"&SECONDE(A3) Téléchargement de la feuille Excel : cookiesNetscape.xls
Sous Internet Explorer :
lang fr springfield/ 0 1671305216 29426104 749607552 29352488 *
acceptCookies OK springfield/ 0 985257984 29424696 475900496 29351424 *Là, c'est beaucoup moins évident! Le MSDN indique que la date est contenue (apparemment) dans le 2ème nombre d'une série de 4, mais reconnaît lui-même que c'est sous la forme d'un charabia difficilement compréhensible! ("...some gobbledy-gook that mostly refers to when the cookie expires on the client..." - Robert Carter - MSDN Technical Writer)
J'ai essayé de trouver l'algorithme, mais en vain. La fonction n'est pas linéaire. Par exemple, si on incrémente la date d'une journée, le 2ème nombre augmente de 201, si on passe à l'année suivante, le nombre augmente de 73425, ...mais ce ne sont pas toujours les mêmes valeurs (parfois 202 ou 73426, de plus , 201*365 = 73365, on ne retrouve pas exactement l'autre valeur) !
Voici quelques valeurs que j'ai pu isoler :
Valeur Date correspondante 29395929 01/01/2001 29469355 01/01/2002 29542780 01/01/2003 29616205 01/01/2004
Un chemin
défini dans le champ path, indique la partie de l'URL pour lequel le cookie est valable. Si on ne précise pas de chemin, le cookie est visible partout sur le site à partir du répertoire où il a été créé.
Par exemple, sur le serveur www.toto.com, on désire que le cookie de nom henri, initialisé à logo_en_flammes ne soit accessible que pour les documents situés dans le répertoire schmurz
Inversement, si on veut qu'un cookie créé depuis un sous-répertoire soit visible de partout dans le site, y compris le(s) répertoire(s) parent(s), il suffit de déclarer un path égal à "/"
Si le champ path est absent, c'est équivalent à déclarer un chemin égal au répertoire courant.
Un domaine
défini dans le champ domain, indique le domaine (=le serveur, ou une partie de l'adresse du serveur) pour lequel le cookie est valable. Effectivement, un serveur peut créer un cookie qui sera lu par un autre serveur. C'est un cas de figure assez rare, et d'intérêt pour le moins limité, voire "bizarre", où un site "fonctionnerait" pour un autre. Si on ne définit pas de domaine, c'est celui du serveur créant le cookie qui est pris en compte
Un navigateur comme Netscape a prévu la possibilité d'interdire ce genre d' "entente" entre serveurs. Cette distinction n'existe pas dans MSIE (versions actuelles : 5).
Le cas "DoubleClick"
Ce procédé "d'entente" entre sites semble cependant utilisé par la compagnie "DoubleClick". Il est d'ailleurs signalé, dans un article intitulé "The Dark Side", par le site CookieCentral, consacré à l'étude des cookies.
Il est fort probable que vous ayez un cookie de DoubleClick sur votre machine, alors que vous n'avez vraisemblablement JAMAIS visité ce site! Il a été créé lors de la visite d'autres sites, DoubleClick faisant office de "centralisateur" d'informations.Parmi ces sites, on relève(liste non exhaustive!) :
- Macromedia
- The Dilbert Zone
- Diamond Multimedia Systems
- WebTrends
- ShockWave
- Macintosh News Network
- Go!Zilla
- Register.com
- Packard Bell
- ...
Le fait d'aller sur l'un de ces sites va (re)générer un cookie DoubleClick, qui permettra de définir un "profil" d'utilisateur.
Un attribut de sécurité
défini par le "flag" secure, indique (s'il existe) que le cookie ne sera transmis quesi la connexion vers le serveur est sécurisée (protocole HTTPS et non pas HTTP)
//le cookie "henri" ne sera transmis que si la connexion est effectuée via https
document.cookie="henri=logo_en_flammes;expires=Wed, 31-Dec-1997 23:59:59 GMT;secure";
Elles concernent la taille et le nombre de cookies pouvant être stockés sur chaque poste client
L'information est stockée ou lue depuis ou vers un document HTML via un script adéquat, en utilisant le champ cookie de l'objet document. Ce champ (ou propriété) cookie contient une suite de paires nom/valeur de chaines alphanumériques , séparées par des points-virgules (cf. plus haut). Par exemple, les fonctions de base pour créer et lire un cookie peuvent s'écrire ainsi :
Dans le document HTML où on aura inséré le code ci-dessus, il suffit de rajouter d'autres scripts d'écriture et/ou lecture, par exemple :
Cette ligne crée le cookie de nom schmurz et lui affecte la valeur plops
quand on clique sur l'image toto.gif
Dans un autre document HTML, en ayant réécrit le script contenant les fonctions de base
initiales, l'ajout du script suivant provoquera l'affichage de la valeur du cookie schmurz
:
Soit un site avec une page d'accueil, puis un certain nombre d'autres pages, toutes de
même niveau, et l'on veut que l'utilisateur "élise" une page favorite, qu'il
pourra atteindre ensuite d'un simple click depuis la page d'accueil pour les visites
futures.
suivi de ce lien, à l'endroit où l'on veut placer le bouton d'action de mémorisation
suivi de ce lien, à l'endroit où l'on veut placer le bouton de branchement vers la page favorite :
(Evidemment, pour que ce test fonctionne, les cookies ne doivent pas
être désactivés dans votre navigateur !)
Actuellement, les cookies que votre navigateur a
(éventuellement) enregistrés en rapport avec le serveur sont les suivants (en caractères gras,
le dernier saisi) :
(NB: il n'y a aucun CGI-BIN dans ce formulaire ! Uniquement du JavaScript !)
A partir de la version 5, Internet Explorer permet un paramétrage
très fin des options de sécurité, et en particulier des cookies.
On peut ainsi définir les règles en fonction :
On peut alors choisir, pour chaque cas :
Ces paramètres sont stockés dans la base de registres (BDR), ce qui peut être mis à profit pour créer des fichiers d'inscription dans le registre (extension .reg). On pourra ensuite leur créer des raccourcis, déposés sur le bureau, permettant un changement rapide de configuration d'Internet Explorer..
La clef principale est :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Zones
Elle contient 5 sous-clefs, correspondant chacune à une zone :
Sous-clef | Description | Commentaires |
0 | Poste de travail | L'ordinateur local |
1 | Intranet local | Contient tous les sites Web présents sur l'intranet de l'ordinateur. |
2 | Sites de confiance | Contient les sites Web de confiance ne risquant pas d'endommager l'ordinateur. |
3 | Internet | Contient tous les sites Web non placés dans d'autres zones. |
4 | Sites sensibles | Contient les sites Web pouvant endommager l'ordinateur ou les données. |
Chaque sous-clefs contient à son tour des entrées définissant les
règles à adopter.
Dans le cas des cookies, ce sont les suivantes :
Entrée | Type de cookies | Valeurs possibles | Règle correspondante |
1A02 | Persistants | dword:00000000 | Accepter |
dword:00000001 | Demander | ||
dword:00000003 | Refuser | ||
1A03 | Session | dword:00000000 | Accepter |
dword:00000001 | Demander | ||
dword:00000003 | Refuser |
Exemple :
On veut créer un fichier IEcookies.reg paramétrant Internet
Explorer au niveau des cookies de la façon suivante :
Ce fichier aura le contenu suivant :
J'ai conçu un utilitaire qui permet d'afficher, sous Internet Explorer seulement, la liste des cookies créés par le site en cours d'affichage, et cela directement depuis le menu contextuel de IE, par un simple click.
Il est décrit (et téléchargeable gratuitement) dans le document consacré à Internet
Les cookies permettent des raccourcis très "élégants" et
très pratiques, dont il serait dommage de se passer.
Ce ne sont que des fichiers contenant quelques lignes de texte, et rien
d'autre.
Toutes les informations qu'ils contiennent auront été volontairement
données par vous-même.
Si par hasard un site WWW vous demande des renseignements plus ou moins confidentiels tels
que votre compte bancaire, la liste des logiciels que vous utilisez,..., c'est le
site lui-même (et surtout son responsable) qui est à mettre en
cause, et non pas les cookies qu'il pourrait
éventuellement créer.
Pour en savoir plus (liste non exhaustive!):