CeníkAPI & SMTPŘešeníSrovnáníNástrojeBlogFAQKontakt
PřihlásitRegistrovat
Tmavý režim
Slovník pojmů

HMAC podpis

Také: HMAC-SHA256, podpis webhooku

HMAC podpis je otisk zprávy vypočítaný hashovací funkcí (typicky SHA-256) ze sdíleného tajného klíče a obsahu, kterým příjemce webhooku ověří, že požadavek skutečně poslala služba a tělo nebylo změněno.

Služba spočítá HMAC-SHA256(secret, tělo požadavku) a pošle ho v hlavičce; aplikace spočítá totéž ze syrového těla (před parsováním JSON, protože i změna pořadí klíčů nebo mezer podpis rozbije) a porovná funkcí s konstantním časem (timingSafeEqual, hash_equals, hmac.compare_digest). Nerovnost znamená podvržený nebo poškozený požadavek, který je třeba odmítnout.

Proti opakovanému přehrání zachyceného požadavku pomáhá časové razítko zahrnuté do podepisovaného řetězce a ID události; webhook starší než několik minut aplikace odmítne. Tajný klíč držte mimo kód (proměnná prostředí) a při úniku ho rotujte.

// Node.js
const sig = crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex")
const ok = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(headerSig))
// jak to souvisí s TopEmail

Webhooky TopEmail nesou HMAC-SHA256 podpis v hlavičce X-TopEmail-Signature; ukázky ověření v Node.js, PHP a Pythonu najdete v návodech na blogu.

// související pojmy
WebhookAPI klíčIdempotence (Idempotency-Key)
Transakční e-maily z vaší domény

SPF, DKIM a DMARC za vás připraví průvodce, doručenky a webhooky jsou v ceně. 0,06 Kč za e-mail, prvních 1 000 e-mailů měsíčně zdarma, bez platební karty.

Registrovat zdarma →