Comprendre les cookies

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
Trois cookies envoyés à un navigateur depuis un serveur dans une réponse
Les serveurs définissent des cookies à l'aide de l'en-tête Set-Cookie.

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
Trois cookies envoyés depuis un navigateur vers un serveur dans une requête
Votre navigateur renvoie les cookies dans l'en-tête Cookie.

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"
JavaScript accède aux cookies dans le navigateur
JavaScript peut accéder aux cookies à l'aide de document.cookie.

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à.

Trois cookies envoyés à un navigateur par différentes requêtes sur la même page <ph type="x-smartling-placeholder">
</ph> Les cookies peuvent provenir de différents domaines sur une même page.

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.

Le même cookie est envoyé dans trois contextes différents <ph type="x-smartling-placeholder">
</ph> Dans un contexte tiers, un cookie est envoyé lors de la visite de différentes pages.

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.