← retour aux snippets

hmac: vérifier la signature d'un webhook

Calculer et comparer une signature HMAC de manière sûre.

python security #hmac#security#webhook

objectif

Calculer et comparer une signature HMAC de manière sûre.

code minimal

import hmac, hashlib, secrets
key = b"supersecret"
msg = b"payload"
sig = hmac.new(key, msg, hashlib.sha256).hexdigest()
# Vérification constante en temps
ok = secrets.compare_digest(sig, hmac.new(key, msg, hashlib.sha256).hexdigest())
print(ok)  # attendu: True

utilisation

import hmac, hashlib
def sign(k: bytes, m: bytes) -> str:
    return hmac.new(k, m, hashlib.sha256).hexdigest()
print(len(sign(b"k", b"m")) == 64)

variante(s) utile(s)

import hmac, hashlib, base64
sig = hmac.new(b"k", b"m", hashlib.sha1).digest()
print(isinstance(base64.b64encode(sig), bytes))

notes

  • Toujours utiliser compare_digest pour éviter les attaques par timing.
  • Ne réutilisez pas de clés HMAC entre usages distincts.