Un cookie est un fragment de données stocké dans le navigateur et utilisé pour conserver un état et d'autres informations dont un site Web a besoin pour exécuter ses fonctionnalités.
Un cookie est un petit fichier que les sites Web stockent sur l'ordinateur de leurs utilisateurs. Les informations qu'ils stockent sont échangées entre le navigateur et le site Web.
Chaque cookie est une paire clé-valeur associée à un certain nombre d'attributs qui déterminent quand et où il est utilisé. Ces attributs permettent, par exemple, de définir des dates d'expiration ou d'indiquer que le cookie ne doit être envoyé que via HTTPS. Vous pouvez définir un cookie dans un en-tête HTTP ou via une interface JavaScript.
Les cookies sont l'une des méthodes disponibles pour ajouter un état persistant aux sites Web. Au fil des ans, ses capacités ont grandi et évolué, mais la plate-forme s'est heurtée à d'autres problèmes problématiques. Pour résoudre ce problème, les navigateurs (y compris Chrome, Firefox et Edge) modifient leur comportement pour appliquer des paramètres par défaut plus respectueux de la confidentialité.
Les cookies en action
Imaginons que vous souhaitiez afficher une section "Nouveautés d'un blog" dans votre utilisateurs. Les utilisateurs peuvent ignorer la promotion. Après cela, ils ne la verront plus pendant un certain temps. Vous pouvez stocker cette préférence dans un cookie et la définir pour qu'elle expire dans un mois. (2 600 000 secondes) et ne les envoyez que via HTTPS. Cet en-tête ressemblerait à ceci:
Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Lorsque le lecteur consulte une page qui répond à ces exigences, il se trouve sur une connexion sécurisée et que le cookie a moins d'un mois (leur navigateur) envoie cet en-tête dans sa requête:
Cookie: promo_shown=1
Vous pouvez également ajouter et lire les cookies disponibles pour ce site en JavaScript à l'aide de
document.cookie
Attribuer une attribution à document.cookie
créera ou
remplacer un cookie par cette clé. Par exemple, vous pouvez essayer les solutions suivantes dans votre
la console JavaScript de votre navigateur:
→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"
Lire document.cookie
affichera tous les cookies accessibles dans la
et le contexte, en séparant chaque cookie par un point-virgule:
→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
Si vous essayez cela sur une
sélection de sites populaires, vous remarquerez que la plupart
ils ont défini bien plus que trois cookies. Dans la plupart des cas, ces
des cookies sont envoyés à chaque requête adressée à ce domaine,
les implications. La bande passante ascendante est souvent plus limitée qu'en téléchargement
et les utilisateurs, de sorte que la surcharge sur toutes les requêtes sortantes augmente votre temps
au premier octet. Soyez prudent quant au nombre et à la taille des cookies que vous définissez. Marque
Utilisation de l'attribut Max-Age
pour s'assurer que les cookies ne restent pas bloqués
plus longtemps que nécessaire.
Que sont les cookies propriétaires et tiers ?
Si vous revenez à la sélection de sites que vous consultiez auparavant, vous avez probablement remarqué que des cookies étaient présents pour différents domaines, uniquement celle que vous consultiez actuellement. Les cookies correspondant au domaine du site actuel, c'est-à-dire ce qui s'affiche dans la barre d'adresse du navigateur, sont désignés appelés cookies propriétaires. De même, les cookies provenant de domaines autres que site actuel sont appelés cookies tiers. Ce n'est pas une valeur absolue par rapport au contexte de l'utilisateur ; un même cookie peut être ou tierces, selon le site sur lequel se trouve l'internaute à ce moment-là.
Reprenons l'exemple ci-dessus. Supposons que l'un de vos articles de blog
d'un chat particulièrement incroyable. Elle est hébergée
/blog/img/amazing-cat.png
Parce que c'est une image incroyable,
l'utilise directement sur son site. Si un visiteur a visité votre blog et a le
promo_shown
, puis lorsqu'il voit amazing-cat.png
sur l'autre
au site de la personne concernée, ce cookie sera envoyé dans cette demande d'image. Ce
n'est particulièrement utile pour personne, car promo_shown
n'est utilisé pour rien
sur le site de cette autre personne, cela ne fait qu'ajouter une surcharge à la demande.
S'il s'agit d'un effet imprévu, quel est l'intérêt de le faire ? C'est ça mécanisme permettant aux sites de conserver un état lorsqu'ils sont utilisés dans un un contexte tiers. Par exemple, si vous intégrez une vidéo YouTube sur votre site, les visiteurs verront un bouton "À regarder plus tard" dans le lecteur. Si votre visiteur est déjà connecté à YouTube, cette session sera disponible dans le intégré par un cookie tiers, autrement dit que la playlist "À regarder plus tard" bouton permet enregistrez la vidéo en une seule fois, au lieu de les inviter à se connecter ou à les faire sortir de votre page et revenir sur YouTube.
L'une des propriétés culturelles du Web est qu'il est généralement ouvert aux
par défaut. C'est en partie ce qui a permis à
tant de gens de créer
leurs propres contenus et applications. Cependant, cela a également entraîné
de sécurité et de confidentialité. Les attaques par falsification de requête intersites (CSRF) reposent sur
que des cookies soient associés à toute requête envoyée à une origine donnée,
qui émet la demande. Par exemple, si vous accédez à evil.example
, il peut
déclenche l'envoi de requêtes à your-blog.example
pour que votre navigateur associe
les cookies associés. Si votre blog ne fait pas attention à la façon dont il les valide
requêtes, alors evil.example
peut déclencher des actions telles que la suppression ou l'ajout de posts
leur propre contenu.
Les utilisateurs sont également de plus en plus conscients de la façon dont les cookies peuvent être utilisés pour suivre
l'activité sur plusieurs sites. Toutefois, jusqu'à présent, il n'existait aucun moyen
votre intention à l'aide du cookie. Votre cookie promo_shown
doit
ne seront envoyés que dans un contexte propriétaire, alors qu'un cookie de session pour un widget
destinés à être intégrés à d'autres sites est intentionnellement
de connexion dans un contexte tiers.
Vous pouvez indiquer explicitement votre intention avec un cookie en définissant l'attribut SameSite approprié.
Pour identifier vos cookies propriétaires et définir les attributs appropriés, consultez Recettes de cookies propriétaires.