Saltar al contenido

Webhooks e integraciones

Verifique una firma de webhook

Calcule la firma sobre el cuerpo bruto de la petición, antes de cualquier parseo de JSON, y compare en tiempo constante. Volver a serializar la carga cambia los bytes, y entonces la firma no coincidirá nunca.

Pasos

  1. Capture el cuerpo bruto como bytes. La mayoría de frameworks le entregan por defecto un objeto ya parseado, y eso ya es tarde.
  2. Calcule la firma sobre exactamente esos bytes con el secreto de su endpoint.
  3. Compare con una comparación de tiempo constante y no con igualdad de cadenas.
  4. Parsee el JSON solo cuando la firma se haya verificado.
  5. Rechace todo lo que falle y registre 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 su handler.
  • Un === simple sobre la firma, que filtra por tiempo.
¿Esto resolvió su problema?

Esto no ayudó

Escríbanos indicando plataforma y versión, los pasos que siguió, el resultado esperado y el espacio de trabajo o código QR involucrado. Enmascare cualquier secreto antes de adjuntar algo.

Escribir a soporte