Validador de firma de webhook.
Pega una carga útil de webhook, tu secreto de firma y la firma recibida. Esto calcula el HMAC (SHA-256 o SHA-1) con la API Web Crypto y te dice si coincide. Genérico: funciona con cualquier webhook firmado con HMAC. Nada sale de tu dispositivo.
Usa los bytes exactos tal como se recibieron — reserializar el JSON cambia el hash.
El HMAC se calculó a continuación. Pega una firma para verificar que coincide.
Todo se ejecuta localmente mediante la API Web Crypto — la carga útil y el secreto nunca salen de esta página. Prefiere siempre un secreto de prueba antes que uno de producción real en cualquier herramienta en línea.
La respuesta breve
¿Qué es una firma de webhook?
Una firma de webhook es un hash con clave — un HMAC — del cuerpo de la solicitud, calculado por el emisor con un secreto que ambas partes comparten y enviado junto con la solicitud, normalmente en una cabecera. Para verificarla, recalculas el HMAC sobre el cuerpo bruto exacto con el mismo secreto y algoritmo y comparas. Una coincidencia demuestra que la carga útil proviene de quien posee el secreto y no fue alterada en tránsito. Autentica y protege la integridad — no cifra la carga útil.
Cómo verificar una firma correctamente
- Captura el cuerpo bruto de la solicitud antes de cualquier análisis. Reserializar el JSON reordena las claves y los espacios, lo que cambia el hash.
- Ejecuta HMAC con el secreto compartido y la función de hash del emisor (SHA-256 en la mayoría de las API modernas).
- Codifica el resultado en hexadecimal y compáralo con la cabecera de la firma, ignorando cualquier prefijo de esquema como sha256=.
- En producción, compara con una función de igualdad de tiempo constante para evitar canales laterales de temporización, y rechaza solicitudes obsoletas usando la marca de tiempo que firma el proveedor.
Preguntas frecuentes
¿Qué es una firma de webhook?
Una firma de webhook es un hash con clave (HMAC) del cuerpo de la solicitud, calculado por el emisor con un secreto compartido y enviado en una cabecera. El receptor recalcula el HMAC sobre el cuerpo bruto exacto con el mismo secreto y compara — si coinciden, la carga útil es auténtica y no fue modificada. Prueba el origen y la integridad sin cifrar la carga útil.
¿Cómo verifico una firma HMAC de webhook?
Toma el cuerpo bruto exacto de la solicitud (antes de cualquier análisis o reserialización JSON), ejecuta HMAC con tu secreto compartido y el algoritmo de hash del emisor (normalmente SHA-256), y codifica el resultado en hexadecimal. Compáralo con la cabecera de la firma, ignorando cualquier prefijo como 'sha256='. Si son iguales, la firma es válida.
¿Por qué no coincide mi firma?
Las causas habituales son: el cuerpo se reserializó y ahora difiere byte a byte de lo firmado; el secreto o algoritmo de hash incorrecto; el proveedor firma una cadena que también incluye una marca de tiempo o prefijo de versión; o un desajuste de codificación hex frente a base64. Aplica siempre el hash sobre los bytes brutos exactos tal como se recibieron.
¿Es seguro pegar aquí un secreto real?
El cálculo se ejecuta completamente en tu navegador mediante la API Web Crypto — nada se sube ni se registra. Como hábito general, prefiere igualmente un secreto de prueba antes que uno de producción real en cualquier herramienta en línea, y rota cualquier secreto que sospeches que se ha expuesto.
¿Debo usar SHA-256 o SHA-1?
Usa HMAC-SHA-256. SHA-1 se ofrece aquí solo porque algunos proveedores heredados aún envían firmas SHA-1. Las integraciones nuevas deben estandarizarse en SHA-256.
¿La firma cifra mi carga útil?
No. Una firma HMAC autentica la carga útil y prueba que no fue manipulada, pero el cuerpo se sigue enviando en claro. Usa HTTPS (TLS) para la confidencialidad; la firma trata del origen y la integridad, no del secreto.
¿Por qué comparar en tiempo constante en producción?
Una comparación de cadenas ingenua puede filtrar cuántos caracteres iniciales coincidieron mediante diminutas diferencias de tiempo, algo que un atacante podría explotar para falsificar una firma. En producción, compara con una función de tiempo constante como crypto.timingSafeEqual. Esta herramienta del navegador compara directamente porque no hay un atacante remoto que pueda cronometrarla.
Verifica cualquier webhook firmado con HMAC.
Este validador funciona con cualquier proveedor que firme sus webhooks con HMAC. Cuando estés listo para construir, BroadNet ofrece una API REST con token Bearer, webhooks de confirmaciones de entrega y binds SMPP 3.4 directos.