DocumentazioneVerificare firma HMAC
Verificare firma HMAC
Validare X-MailingCore-Signature sul tuo server.
Ogni webhook in uscita include una firma per confermare che il payload proviene da MailingCore e non e stato alterato.
Formato dell'header
X-MailingCore-Signature: t=1719763200,v1=5f7b3c...
t— timestamp Unix dell'inviov1— HMAC-SHA256 in esadecimale
Algoritmo di verifica
const crypto = require('crypto')
function verifyWebhook(rawBody, signatureHeader, secret) {
const parts = Object.fromEntries(
signatureHeader.split(',').map((p) => p.split('='))
)
const timestamp = parts.t
const receivedSig = parts.v1
const expected = crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${rawBody}`)
.digest('hex')
return crypto.timingSafeEqual(
Buffer.from(receivedSig, 'hex'),
Buffer.from(expected, 'hex')
)
}
Buone pratiche
- Leggi il raw body senza parsare JSON prima di verificare
- Rifiuta timestamp troppo vecchi (replay) — tolleranza consigliata ±5 min
- Usa
timingSafeEqualper confrontare le firme - Rispondi 200 rapidamente e processa in una coda propria
Payload di esempio
Il corpo JSON include type (nome dell'evento), data (dettagli email o contatto) e metadati del tenant. La struttura esatta dipende dall'evento; consulta il riferimento OpenAPI su /docs-json per lo schema aggiornato.