DocumentacionVerificar firma HMAC
Verificar firma HMAC
Validar X-MailingCore-Signature en tu servidor.
Cada webhook saliente incluye una firma para que confirmes que el payload proviene de MailingCore y no fue alterado.
Formato del header
X-MailingCore-Signature: t=1719763200,v1=5f7b3c...
t— timestamp Unix del enviov1— HMAC-SHA256 en hexadecimal
Algoritmo de verificacion
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')
)
}
Buenas practicas
- Lee el raw body sin parsear JSON antes de verificar
- Rechaza timestamps muy antiguos (replay) — tolerancia recomendada ±5 min
- Usa
timingSafeEqualpara comparar firmas - Responde 200 rapidamente y procesa en cola propia
Payload de ejemplo
El cuerpo JSON incluye type (nombre del evento), data (detalles del email o contacto) y metadatos del tenant. La estructura exacta depende del evento; consulta la referencia OpenAPI en /docs-json para el esquema actualizado.