Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Protection CSRF simplifiee
CSRF (Cross-Site Request Forgery) est une attaque ou un site malveillant fait exécuter des actions a ton insu sur un autre site ou tu es connecte. Par exemple, un lien piege qui transfere de l'argent depuis ton compte bancaire.
Pour se proteger, le serveur génère un token unique a chaque formulaire. Quand le formulaire est soumis, le serveur vérifie que le token est valide. Un site malveillant ne peut pas deviner ce token.
Les tokens CSRF sont a usage unique : une fois utilise, il est invalide.
Écris une classe CSRFProtection avec : - générer_token() : génère un token aleatoire, le stocke, et le retourne - valider_token(token) : retourne True si le token est valide, le supprime (usage unique), et retourne False si invalide
Exemple : c = CSRFProtection() t = c.générer_token() c.valider_token(t) renvoie True c.valider_token(t) renvoie False (deja utilise)
Tests (2/4)
Token valide
c = CSRFProtection()
t = c.générer_token()
assert c.valider_token(t) == True
Usage unique
c = CSRFProtection()
t = c.générer_token()
c.valider_token(t)
assert c.valider_token(t) == False
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
import random
class CSRFProtection:
def __init__(self):
self.tokens = set()
def generer_token(self):
token = ''.join(random.choice('0123456789abcdef') for _ in range(32))
self.tokens.add(token)
return token
def valider_token(self, token):
if token in self.tokens:
self.tokens.discard(token)
return True
return False