Comprendre le mécanisme
La session associe un identifiant à un contexte accepté par le serveur. Sa création, son renouvellement, son expiration et sa révocation forment un cycle de vie. Une fixation exploite l’acceptation d’un identifiant connu ou contrôlé avant que la victime obtienne un contexte authentifié. Après authentification ou changement de privilège, une stratégie de renouvellement évite de prolonger une ancienne association de confiance.
Raisonner et vérifier
La rotation doit tenir compte des requêtes concurrentes et des erreurs réseau. Une suppression précipitée peut perdre un état légitime ; conserver indéfiniment l’ancien contexte peut laisser un accès indésirable. Définissez durées d’inactivité et absolues, comportement de l’ancien identifiant et événements d’audit minimisés. La déconnexion de la page courante n’est pas automatiquement la révocation de tous les appareils.
Transition de connexion
La connexion constitue une transition sensible de session. La politique doit empêcher une fixation utilisable. Un identifiant connu avant connexion ne doit pas devenir silencieusement une capacité privilégiée pour un tiers. Définissez rotation et reprise des données au moment où l’identité change.
Erreur fréquente à comprendre
Une identité anonyme impose le même identifiant après login.
La politique doit empêcher une fixation utilisable.
Continuité contrôlée
Une rotation doit préserver les données nécessaires selon le contrat. Le changement d’identifiant doit rester cohérent avec le parcours. La rotation peut devoir préserver panier ou préférences tout en changeant la capacité d’authentification. Listez ce qui doit suivre la transition et ce qui doit être réinitialisé, puis testez les deux.
Erreur fréquente à comprendre
La rotation signifie supprimer sans analyse tout état métier.
Le changement d’identifiant doit rester cohérent avec le parcours.
Instances
La révocation doit être testée sur les instances concernées. La propagation et les caches font partie du système. Un retrait stocké sur une seule instance peut laisser une autre accepter l’ancienne session. Vérifiez le backend partagé, caches et délais de propagation sur tous les nœuds inclus dans le contrat.
Erreur fréquente à comprendre
Une suppression locale invalide automatiquement tous les validateurs.
La propagation et les caches font partie du système.
Demandes simultanées
La concurrence peut affecter la rotation. Des requêtes parallèles peuvent observer des transitions. Une requête ancienne peut arriver pendant la rotation. Définissez le traitement de ce chevauchement et vérifiez qu’il ne restaure pas une référence retirée ou ne fait pas perdre un état nécessaire.
Erreur fréquente à comprendre
Deux requêtes simultanées ne peuvent jamais toucher une session.
Des requêtes parallèles peuvent observer des transitions.
Durées serveur
Le serveur impose des limites de durée. La durée doit suivre une politique de confiance serveur. Fixez durée maximale et éventuelle durée d’inactivité selon le risque. L’expiration du cookie ne suffit pas : le backend doit refuser une valeur conservée au-delà de la politique d’acceptation.
Erreur fréquente à comprendre
Le client décide librement de prolonger une session admin.
La durée doit suivre une politique de confiance serveur.
Élévation
Une élévation de privilège demande une politique explicite. Le changement de contexte peut exiger une vérification adaptée. Passer d’un compte ordinaire à une opération sensible peut demander une réauthentification et une nouvelle capacité. Une simple mise à jour de rôle ne traite pas automatiquement le risque des anciennes références.
Erreur fréquente à comprendre
Un login ancien justifie toute future élévation sans contrôle.
Le changement de contexte peut exiger une vérification adaptée.
Logout
Un logout doit avoir un contrat de retrait défini. Les effets dépendent de l’implémentation et du périmètre. Annoncez si la déconnexion retire seulement cette session ou toutes les sessions du compte. Vérifiez une copie conservée après l’action ; l’absence du cookie dans l’interface ne prouve pas le refus serveur.
Erreur fréquente à comprendre
Le mot logout garantit partout un retrait instantané.
Les effets dépendent de l’implémentation et du périmètre.
Ancienne référence
Les anciens identifiants doivent suivre une politique de refus. Une compatibilité sans limite peut conserver le risque. Le contrat doit dire quand l’ancien identifiant cesse d’autoriser les demandes privilégiées. Testez cette borne et évitez une période de grâce indéfinie introduite pour contourner des problèmes de concurrence.
Erreur fréquente à comprendre
Tout identifiant ancien reste valide pour faciliter la migration.
Une compatibilité sans limite peut conserver le risque.
Stockage protégé
Le stockage de session doit être protégé. Le contenu et les identifiants restent sensibles. Le store de sessions contient des capacités ou des données sensibles. Limitez accès, sauvegardes et visibilité des outils d’exploitation ; une protection de cookie ne répare pas un stockage exposé.
Erreur fréquente à comprendre
Une valeur opaque dispense de protéger le stockage serveur.
Le contenu et les identifiants restent sensibles.
Avant et après
Un test doit essayer l’identifiant avant et après transition. Il faut vérifier les capacités de l’ancienne référence. Présentez l’identifiant initial avant connexion, après connexion puis après retrait. Cette chronologie démontre les transitions, au lieu de vérifier seulement qu’un nouvel identifiant a été généré.
Erreur fréquente à comprendre
Cliquer une seule fois sur Connexion prouve l’absence de fixation.
Il faut vérifier les capacités de l’ancienne référence.
Atelier guidé : lire, expliquer et vérifier le code
before_login: session_id=lab-old
login: success
privileged_request_with_lab_old: accepted
rotation_policy: old_id_must_stop_authorizing_privileged_requests La politique exige que lab-old cesse d’autoriser les demandes privilégiées, mais la trace montre encore une acceptation. La transition est donc incorrecte dans ce contrat. Vérifiez rotation, invalidation et propagation, puis ajoutez un test concurrent qui conserve la continuité des données autorisées.
L’interface ne retire pas une capacité serveur. Changer la représentation ne résout pas l’état de confiance. La taille du corps ne démontre pas le retrait. Le comportement contredit la politique de transition annoncée.
Travail pratique : Simulez deux requêtes parallèles lors d’une connexion puis lors d’une déconnexion. Définissez le sort de chaque identifiant.
Critères de correction : Utilisez un environnement isolé et des comptes fictifs. Vérifiez qu’un identifiant obsolète ne récupère pas les nouveaux privilèges ; contrôlez les faux refus liés à la concurrence et documentez la stratégie de reprise.
Exemple commenté
Anonyme → authentification vérifiée → nouvel état de session
Ancien identifiant → politique d’obsolescence explicite
Déconnexion → invalidation selon le périmètre annoncéLe schéma distingue la transition de confiance du simple affichage d’un écran de connexion. La concurrence fait partie du contrat.
Exercice de mise en pratique
Simulez deux requêtes parallèles lors d’une connexion puis lors d’une déconnexion. Définissez le sort de chaque identifiant.
Voir une proposition de correction
Utilisez un environnement isolé et des comptes fictifs. Vérifiez qu’un identifiant obsolète ne récupère pas les nouveaux privilèges ; contrôlez les faux refus liés à la concurrence et documentez la stratégie de reprise.
Points de vérification
- Rotation aux transitions de confiance.
- Durées serveur vérifiées.
- Périmètre de révocation annoncé.
Contrôle de connaissances
Cours associé : 18. Cycle de session, fixation et élévation de privilèges ↗Validation du module
101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.
Commencer ou reprendre les 101 questions →Cette marque suit votre propre avancement ; elle ne certifie pas la maîtrise du sujet. Effectuez l’exercice avant de passer à la suite.
