Saltar al contenido

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

  1. Captura el cuerpo bruto como bytes. La mayoría de frameworks te entregan por defecto un objeto ya parseado, y eso ya es tarde.
  2. Calcula la firma sobre exactamente esos bytes con el secreto de tu endpoint.
  3. Compara con una comparación de tiempo constante y no con igualdad de cadenas.
  4. Parsea el JSON solo cuando la firma se haya verificado.
  5. 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