Cookie HTTP : Petit fichier texte stocké sur le poste client contenant des données associées à un site web spécifique.
- Nom : identifiant unique du cookie
- Valeur : données associées au cookie
- Domaine : portée du cookie sur les sous-domaines
- Chemin : répertoires autorisés à accéder au cookie
- Date d'expiration : durée de vie du cookie
- Attributs de sécurité : HttpOnly, Secure, SameSite
Le serveur envoie un en-tête Set-Cookie dans la réponse HTTP
Le navigateur stocke le cookie selon ses attributs
Le navigateur envoie le cookie avec chaque requête correspondante
Le serveur lit le cookie dans l'en-tête Cookie de la requête
Le serveur utilise les données du cookie pour personnaliser la réponse
Cookie = Nom + Valeur + Attributs de gestion
• Format standard : nom=valeur; attributs séparés par point-virgule
• Limite de taille : Environ 4KB par cookie
• Portée : Restreinte par domaine et chemin
Cookies : Données stockées côté client. Sessions : Données stockées côté serveur identifiées par un token.
| Aspect | Cookies | Sessions |
|---|---|---|
| Stockage | Côté client | Côté serveur |
| Sécurité | Moins sécurisé | Plus sécurisé |
| Capacité | Limité (~4KB) | Illimité côté serveur |
| Contrôle | Partiel | Complet |
| Performance | Plus rapide | Plus lente |
Déterminer si les données doivent être persistantes côté client
Utiliser des cookies pour les préférences, des sessions pour l'authentification
Mettre en œuvre la solution choisie selon les besoins
Appliquer les bonnes pratiques de sécurité pour chaque méthode
Les sessions sont plus sécurisées mais plus lourdes que les cookies
• Données sensibles : Stocker dans des sessions, pas dans des cookies
• Préférences utilisateur : Stocker dans des cookies
• Contrôle total : Les sessions offrent plus de contrôle au serveur
Cookie sécurisé : Cookie avec des attributs de sécurité pour protéger les données sensibles.
Déterminer quelles données nécessitent une protection
Assurer que le cookie n'est transmis que sur des connexions HTTPS
Empêcher l'accès via JavaScript pour éviter XSS
Protéger contre les attaques CSRF
Restreindre le domaine et le chemin d'accès
Les attributs de sécurité protègent les cookies des attaques
• Secure : Empêche l'envoi sur des connexions non chiffrées
• HttpOnly : Protège contre le vol via XSS
• SameSite : Empêche les requêtes cross-site
Durée de vie des sessions : Période pendant laquelle les données de session restent disponibles côté serveur.
Création d'un identifiant unique lors de la première visite
Définition d'un délai d'expiration (timeout) pour la session
Le timeout se réinitialise à chaque activité utilisateur
Le serveur surveille les sessions expirées
Suppression des données de session expirées
Avertissement de l'utilisateur de la fin de session
Les sessions ont une durée limitée pour des raisons de sécurité
• Timeout court : Pour les sessions sensibles (bancaires)
• Timeout long : Pour les sessions de commodité (connexion persistante)
• Nettoyage automatique : Libération des ressources serveur
Cycle de session : Ensemble des étapes de création, utilisation et suppression d'une session utilisateur.
L'utilisateur visite le site pour la première fois
Le serveur génère un ID de session unique
Les données de session sont stockées avec l'ID
L'ID est envoyé au client via cookie ou URL
Le client envoie l'ID avec chaque requête
Les données de session sont modifiées selon les actions
La session expire ou est explicitement détruite
Les données de session sont supprimées du serveur
Le cycle de session gère l'état de l'utilisateur entre les requêtes
• ID unique : Garantit l'unicité de chaque session
• Sécurité : L'ID doit être difficile à deviner
• Propreté : Les sessions expirées doivent être nettoyées
- Session : Temporaire, supprimé à la fermeture du navigateur
- Persistant : Avec date d'expiration définie
- Sécurité : Avec attributs Secure, HttpOnly, SameSite
- Tracking : Utilisés pour le suivi utilisateur
- HTTP est sans état, les cookies et sessions permettent de maintenir l'état
- Les données sensibles doivent être stockées dans des sessions, pas des cookies
- Les attributs de sécurité sont essentiels pour protéger les cookies
- Les sessions doivent être correctement gérées pour libérer les ressources
- Les identifiants de session doivent être suffisamment aléatoires pour être sécurisés