objectif
Comparer en temps constant pour éviter les attaques temporelles.
code minimal
import secrets
a = "token-123456"
b = "token-123456"
print(secrets.compare_digest(a, b) is True) # attendu: True
utilisation
import hmac, hashlib, secrets
secret = b"key"
msg = b"payload"
sig = hmac.new(secret, msg, hashlib.sha256).hexdigest()
provided = sig # simulate request header
print(secrets.compare_digest(provided, sig)) # attendu: True
variante(s) utile(s)
import secrets
print(isinstance(secrets.compare_digest(b"x", b"x"), bool))
notes
- Utilisez toujours compare_digest pour comparer des secrets (HMAC, tokens).
- Évitez l’opérateur == sur des valeurs sensibles.