Webhooks e integraciones
Verifica una firma de webhook
Calcula la firma sobre el cuerpo bruto de la petición, antes de cualquier parseo de JSON, y compara en tiempo constante. Volver a serializar la carga cambia los bytes, y entonces la firma no coincidirá nunca.
Pasos
- Captura el cuerpo bruto como bytes. La mayoría de frameworks te entregan por defecto un objeto ya parseado, y eso ya es tarde.
- Calcula la firma sobre exactamente esos bytes con el secreto de tu endpoint.
- Compara con una comparación de tiempo constante y no con igualdad de cadenas.
- Parsea el JSON solo cuando la firma se haya verificado.
- Rechaza todo lo que falle y registra el identificador de entrega en vez del cuerpo.
Cómo comprobar el resultado
Una entrega auténtica verifica, y la misma carga con un carácter cambiado no.
Lo que suele salir mal
- Parsear y volver a serializar antes de calcular la firma.
- Un middleware de parseo que consume el flujo antes de tu handler.
- Un
===simple sobre la firma, que filtra por tiempo.
¿Esto resolvió tu problema?
Esto no ayudó
Escríbenos indicando plataforma y versión, los pasos que seguiste, el resultado esperado y el espacio de trabajo o código QR implicado. Enmascara cualquier secreto antes de adjuntar nada.
Escribir a soporte