Back-end · 4 mondes · 12 étapes
Auth & sécurité
Mots de passe, jetons signés, failles du web et autorisation, écrits de ses mains.
Progression
0 %
0/12 étapes terminées
Intermédiaire · 10 min de lecture
Jetons et sessions
Rester connecté, sans se faire usurper
1Définition
Après la connexion, le serveur remet un jeton que le client présente à chaque requête. Deux familles : la session (un identifiant aléatoire, dont le serveur garde l'état en base) et le jeton signé (tout le contenu dans le jeton, protégé par une signature HMAC, comme un JWT).
2Principes fondamentaux
01
Signer n'est pas cacher
Un jeton signé se lit par tous ; on n'y met rien de secret.
02
Toujours vérifier la signature
Recalculer la signature du contenu reçu avec le secret du serveur, et comparer.
03
Des durées courtes
Un jeton signé ne se révoque pas : on le fait expirer vite, et on le renouvelle.
04
Un secret digne de ce nom
Long, aléatoire, hors du code source, et changé s'il fuit.
3Exemples pratiques
Session ou jeton ?
1// Session : cookie "session=8f3a…" → le serveur cherche 8f3a… en base2// Jeton signé : "eyJwc2V1ZG8i….DBzD0Dp8…" → le serveur vérifie la signatureLa session se révoque instantanément (on efface la ligne) ; le jeton signé évite une lecture en base à chaque requête.
Un cookie bien réglé
1Set-Cookie: session=8f3a…; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=86400HttpOnly : inaccessible au JavaScript (donc aux XSS). Secure : HTTPS seulement. SameSite : limite l'envoi depuis d'autres sites.
4Erreurs courantes
Accepter un jeton sans le vérifier
À éviter
const donnees = JSON.parse(atob(jeton.split('.')[0]));À faire
vérifier la signature avant toute lecturePourquoi : N'importe qui fabrique alors le jeton de son choix.
Un jeton éternel
À éviter
{ pseudo: "codey" } // sans expÀ faire
{ pseudo: "codey", exp: maintenant + 900 }Pourquoi : Un jeton volé resterait valable pour toujours.
Le jeton dans localStorage
À éviter
localStorage.setItem("jeton", jeton)À faire
cookie HttpOnlyPourquoi : Tout script de la page — y compris un script injecté — peut lire localStorage.
5Subtilités à connaître
- ◆L'algorithme « none » des JWT a longtemps permis de contourner des bibliothèques mal réglées : on impose l'algorithme attendu à la vérification.
- ◆Un jeton de rafraîchissement, à longue durée et stocké à part, permet d'obtenir de nouveaux jetons courts sans redemander le mot de passe.
- ◆Supabase, un fournisseur très utilisé, délivre des JWT signés et gère leur renouvellement ; Sys-Code, lui, gardera ses sessions dans sa propre base, avec Better Auth.
6Vérifie ta compréhension
Question 1/3
Score 0
Le contenu d'un JWT est…
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.