🧭 Sommaire
Les cookies sont de petites quantités de données (métadonnées) ou d’informations stockées localement sur votre ordinateur et envoyées au serveur lorsque vous faites une demande.
Lorsque vous visitez un site web, celui-ci n’est pas capable de vous identifier d’une autre personne. Pour certaines sites (applications web) comme le site de votre banque, il est important d’identifier les différents utilisateurs et leurs niveaux d’accès etc…
Pour ce faire, le serveur web attribue des cookies pour créer et gérer une session entre le client et le serveur, c’est-à-dire entre vous (client) et le site web (serveur).
La plupart des sites web que vous visitez utilise des cookies afin d’améliorer votre expérience utilisateur en permettant à ce site web de se « souvenir » de vous, soit pour la durée de votre visite (à l’aide d’un « cookie de session »), soit pour des visites répétées (à l’aide d’un « cookie persistant »). . Les cookies rendent l’interaction entre vous et le site web plus rapide et plus facile.

Comme dit précédemment, un cookie est un élément de données qu’un serveur envoie dans la réponse HTTP. Le client stocke le cookie et le renvoie lors des demandes suivantes. Cela permet au client et au serveur de partager un Etat.
Pour rappel, le protocole HTTP est sans Etat (stateless), c’est-à-dire que chaque requête est exécutée indépendamment, sans aucune connaissance des requêtes qui ont été exécutées précédemment, ce qui signifie qu’une fois la transaction terminée, la connexion entre le client et le serveur est également perdue. Voir la RFC HTTP pour plus de détails sur le protocole. https://datatracker.ietf.org/doc/html/rfc2818
Comment cela fonctionne-t-il au niveau technique ?
Lorsque vous envoyez une demande, par exemple une demande de connexion, votre navigateur envoie ces informations, généralement sous forme de demande POST, au serveur Web. Le serveur Web vérifiera qu’il a reçu les données et définira un cookie unique. Les cookies sont aléatoires, et les valeurs sont déterminées par les meilleures pratiques ou par le développeur web. Une fois le cookie défini, tant qu’il reste stocké localement dans votre navigateur, toutes les futures demandes GET seront automatiquement envoyées avec ce cookie afin de vous identifier et de déterminer votre niveau d’accès. Lorsque le serveur reçoit votre demande GET et le cookie, il localise et déchiffre (*Deserialization) votre session.
Serialization vs deserialization
La sérialisation est le processus qui consiste à transformer un objet en un format de données qui peut être restauré ultérieurement. Les gens sérialisent souvent des objets afin de les sauvegarder sur un support de stockage ou de les envoyer dans le cadre de communications.
La désérialisation est l’inverse de ce processus : elle prend des données structurées à partir d’un certain format et les reconstruit en un objet. Aujourd’hui, le format le plus populaire pour la sérialisation des données est JSON. Avant cela, c’était XML.
SRC:https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.htm
Les cookies sont constitués de 11 composants différents
| Composants | Utilisation | Exemple |
| Name | Un identifiant de cookie unique (défini de façon arbitraire par le serveur web). Toujours associé à la composante valeur(Value). | SessionID |
| Value | Une valeur de cookie unique (Value)(fixée arbitrairement par le serveur web). Toujours associé à l’élément de nom (name) | sty1z3kz11gtsxjv648mqwlx4ginpt6c |
| Domain | Originating domain of the cookie. Sets the scope of the cookie. | .google.com |
| Path | Chemin d’accès local au cookie. Définit la portée du cookie. | / |
| Expires/Max-age | Date/heure d’expiration des cookies | 2021-10-11T14:39:04.166Z |
| Size | Le taille du disque du cookie en octets. Il s’agit généralement de {Name+Value} | 91 |
| HttpOnly | Le cookie n’est pas accessible par des scripts côté client. | ( marqués par une coche) |
| Secure | Le cookie n’est transféré que par HTTPS | ( marqués par une coche) |
| SameSite | Indique quand un cookie est envoyé par des requêtes cross-site. | none |
| SameParty | Étend la fonctionnalité de l’attribut SameSite aux ensembles First-Party. | ( marqués par une coche) |
| Priority | Définit l’importance d’un cookie. Détermine s’il doit être supprimé ou conservé. | High |
Les différents types :
Cookies de session :
Les cookies de session sont utilisés uniquement lors de la navigation sur un site web. Ils sont stockés dans une mémoire à accès aléatoire et ne sont jamais écrits sur le disque dur.
Lorsque la session se termine, les cookies de session sont automatiquement supprimés.
Cookies persistants :
Les cookies persistants sont conservés indéfiniment sur un ordinateur, même si nombre d’entre eux ont une date d’expiration et sont automatiquement supprimés lorsque cette date est atteinte.
Authentification.
Ces cookies permettent de savoir si un utilisateur est connecté et sous quel nom. Ils rationalisent également les informations de connexion, afin que les utilisateurs n’aient pas à se souvenir des mots de passe du site.
Le tracking:
Ces cookies suivent les visites multiples d’un même site au fil du temps. Certains détaillants en ligne, par exemple, utilisent des cookies pour savoir quels utilisateurs visitent quelles pages et quels produits ils consultent. Ces informations leur permettent de suggérer d’autres articles susceptibles d’intéresser les visiteurs. Au fil du temps, un profil est créé sur la base de l’historique de navigation d’un utilisateur sur ce site.