Inicio / Guías / Verificar webhooks y firmas de API — guía práctica de HMAC

Un webhook es la forma en que un servicio externo envía eventos a tu servidor. Pero como cualquiera puede enviar una solicitud a esa URL, tienes que comprobar si la solicitud recibida proviene realmente de ese servicio. El método estándar para ello es la firma HMAC.

El emisor y el receptor comparten una clave secreta. El emisor hashea el cuerpo de la solicitud con la clave mediante HMAC-SHA256 y envía la firma en una cabecera. El receptor hashea el mismo cuerpo con la misma clave y compara si ambas firmas coinciden.

Si coinciden, se garantizan dos cosas a la vez. Como solo quien tiene la clave puede generar la firma correcta, se confirma la autenticidad; y como cualquier cambio mínimo en el cuerpo altera la firma, se confirma la integridad. La mayoría de los webhooks, como los de GitHub, Stripe y Slack, usan este método.

Puedes verificarlo directamente en AG HASH. Activa la opción HMAC, introduce la clave compartida y pega el cuerpo de la solicitud: obtendrás el valor HMAC-SHA256. Solo tienes que compararlo con la firma de la cabecera de la solicitud. En una verificación real se recomienda una comparación de tiempo constante para evitar ataques de temporización.

Hashear con este algoritmo