Headers
Cada entrega incluye estos headers:
Si tu suscripción los tiene configurados, también se envían:
Cómo se genera la firma
Pruff firma cada entrega con el secret de tu suscripción usando HMAC-SHA256. El mensaje firmado es el timestamp, un punto y el body exacto de la request:X-Webhook-Signature con el formato t={timestamp},v1={firma}. El timestamp de t es el mismo que el de X-Webhook-Timestamp.
Cómo validar una entrega
1
Lee el body sin parsear
Calcula la firma sobre los bytes que recibiste. Si parseas el JSON y lo vuelves a serializar, el resultado puede cambiar y la firma no coincidirá.
2
Extrae t y v1 de X-Webhook-Signature
Separa el header por comas y cada parte por el primer
=.3
Calcula la firma esperada
HMAC-SHA256 con tu secret sobre
{t}.{body}, en hexadecimal.4
Compara en tiempo constante
Usa una comparación de tiempo constante para no filtrar información por tiempos de respuesta. Si no coinciden, rechaza la entrega.
5
Opcional: valida la antigüedad
Rechaza entregas cuyo
t tenga más de 30 minutos, para acotar la reutilización de entregas interceptadas.