← HTTP — sécurité avancée, 40 leçons de cours

Module 16 / 40 · 90 min

16. Cookies : transport d’état et confiance

Distinguer identifiant opaque, données client et autorité serveur.

Lessons, exercises and questions in this path are in French. The interface follows the site language.

Your progress will appear here when JavaScript is active.

Progress and best score are stored only in this browser. No account is needed; clearing browser data removes them. Module times are estimates including exercises.

Comprendre le mécanisme

Un cookie est stocké par le navigateur puis envoyé lorsque ses règles d’applicabilité le permettent. Il peut porter un identifiant de session opaque ou une autre donnée, mais son nom et sa présence ne prouvent pas l’autorité de son contenu. Une préférence modifiable et un identifiant authentifié n’ont pas le même rôle. Le serveur décide de l’identité et des droits au moyen d’un mécanisme vérifiable.

Raisonner et vérifier

Inventoriez les cookies, leur finalité et les pages qui les utilisent. Évitez d’y placer inutilement des données personnelles ou des secrets lisibles. Une expiration côté navigateur ne remplace pas la durée d’acceptation de la session côté serveur. Testez déconnexion, changement de privilège et coexistence de cookies portant un même nom avec des portées différentes, afin de repérer les ambiguïtés de lecture.

Identifiant opaque

Un cookie de session peut porter un identifiant opaque. La valeur reçue doit être reliée à un état admis. Un cookie de session peut être une référence aléatoire vers un état serveur. Le nom du cookie ou une valeur role=admin fournie par le client ne constitue pas une preuve de privilège.

Understand this common mistake

Tout cookie constitue un privilège serveur valide.

La valeur reçue doit être reliée à un état admis.

Acceptation serveur

Le serveur doit vérifier expiration et retrait de session. Les autres détenteurs ne dépendent pas de cette suppression locale. Le serveur doit vérifier que la session existe, reste active et appartient au contexte attendu. La présence d’un cookie syntaxiquement valide ne suffit pas à lui donner une durée illimitée.

Understand this common mistake

Supprimer le cookie client révoque toutes ses copies.

Les autres détenteurs ne dépendent pas de cette suppression locale.

Envoi automatique

Un cookie peut être envoyé automatiquement selon sa politique. L’envoi peut accompagner un déclenchement tiers. Le navigateur joint les cookies selon destination et attributs applicables. Cette automaticité explique le besoin d’une défense CSRF pour les actions sensibles réalisées avec une identité ambiante.

Understand this common mistake

Toute requête avec cookie prouve un clic volontaire.

L’envoi peut accompagner un déclenchement tiers.

Deux stockages

Le stockage navigateur et l’état serveur sont distincts. Les cycles de conservation peuvent différer. Effacer un cookie retire une copie côté navigateur ; invalider la session retire une capacité côté serveur selon sa politique. Pour une déconnexion sensible, définissez et testez les deux effets.

Understand this common mistake

Un cookie expiré visuellement supprime toute donnée serveur.

Les cycles de conservation peuvent différer.

Portée

Le domaine et le chemin participent au périmètre d’envoi. Ce périmètre ne remplace pas une autorisation métier. Domain et Path influencent les destinations d’envoi. Choisissez une portée minimale, sans en déduire une séparation d’autorisation entre utilisateurs ou une défense suffisante contre un script compromis.

Understand this common mistake

Le chemin du cookie valide les droits sur les objets.

Ce périmètre ne remplace pas une autorisation métier.

Identité maîtrisée

Une session doit être liée à un état d’identité maîtrisé. Une entrée client ne crée pas un rôle de confiance. La session doit référencer un utilisateur selon le mécanisme serveur, pas faire confiance à des rôles envoyés librement. Rechargez ou versionnez l’état nécessaire à la politique de retrait d’accès.

Understand this common mistake

Le client peut définir son rôle dans un cookie libre.

Une entrée client ne crée pas un rôle de confiance.

Canal protégé

Le canal doit protéger les cookies sensibles. Un identifiant opaque volé peut devenir une capacité. Protégez les cookies sensibles avec HTTPS et les attributs adaptés. Vérifiez les terminaisons proxy et évitez qu’une redirection ou un journal conserve leur valeur en clair.

Understand this common mistake

Une valeur opaque n’a pas besoin de transport sécurisé.

Un identifiant opaque volé peut devenir une capacité.

Expiration effective

L’expiration doit être testée côté serveur. Le serveur doit appliquer sa propre décision. Conservez une ancienne valeur dans un test puis présentez-la après expiration serveur. Le refus doit venir de la politique d’acceptation, même si un client malveillant ignore l’expiration navigateur.

Understand this common mistake

La seule date affichée dans l’interface impose le refus serveur.

Le serveur doit appliquer sa propre décision.

Privilège

Les transitions de privilège demandent une politique de session. Le changement d’identité exige une revue de fixation et de rotation. Connexion et élévation de droit sont des transitions qui peuvent exiger rotation et nouvelle authentification. Documentez le devenir des anciennes références afin qu’elles ne gagnent pas silencieusement les nouveaux privilèges.

Understand this common mistake

Une session anonyme doit rester identique sans analyse après login.

Le changement d’identité exige une revue de fixation et de rotation.

Journaux

La journalisation doit minimiser les valeurs sensibles. Les traces ne doivent pas devenir un magasin de capacités. Enregistrez événements et références non exploitables plutôt que la valeur de session complète. Une fuite de logs contenant les cookies pourrait créer un accès équivalent à celui que la session protège.

Understand this common mistake

Tous les cookies doivent être copiés dans chaque événement.

Les traces ne doivent pas devenir un magasin de capacités.

Atelier guidé : lire, expliquer et vérifier le code

Cookie: role=admin; theme=dark

Hypothèse : aucune preuve serveur ne lie role à une identité autorisée.

Le cookie annonce role=admin sans preuve serveur selon l’hypothèse donnée. Cette valeur doit rester une entrée hostile. Remplacez ce modèle par une session ou un token validé puis appliquez une autorisation côté serveur, et vérifiez qu’une modification manuelle du cookie ne donne aucun privilège.

La préférence visuelle ne crée pas de droit. Un client peut présenter une affirmation non fiable. Le nom ne prouve pas l’autorité. Le séparateur ne signe rien.

Travail pratique : Créez une fiche par cookie de laboratoire : finalité, producteur, portée, protections, durée côté navigateur et durée côté serveur.

Critères de correction : Testez une valeur absente, inconnue et révoquée ; vérifiez qu’aucune de ces entrées ne donne un rôle par simple lecture du cookie. Contrôlez ensuite que la déconnexion invalide le contexte selon le contrat prévu.

Worked example

Set-Cookie: lab_session=opaque-value; Path=/; Secure; HttpOnly; SameSite=Lax

opaque-value est une valeur illustrative, pas un secret utilisable. Le serveur conserve la politique de durée et l’état d’authentification correspondant.

Practical exercise

Créez une fiche par cookie de laboratoire : finalité, producteur, portée, protections, durée côté navigateur et durée côté serveur.

View a suggested solution

Testez une valeur absente, inconnue et révoquée ; vérifiez qu’aucune de ces entrées ne donne un rôle par simple lecture du cookie. Contrôlez ensuite que la déconnexion invalide le contexte selon le contrat prévu.

Verification checklist

  • Cookie reçu non fiable par défaut.
  • Durée serveur explicite.
  • Aucune permission déduite du nom.

Knowledge check

Related lesson: 16. Cookies : transport d’état et confiance ↗
Un cookie nommé admin prouve-t-il un privilège ?

Reference documentation ↗

Module validation

101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.

Start or resume the 101 questions →