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
- Capture el cuerpo bruto como bytes. La mayoría de frameworks le entregan por defecto un objeto ya parseado, y eso ya es tarde.
- Calcule la firma sobre exactamente esos bytes con el secreto de su endpoint.
- Compare con una comparación de tiempo constante y no con igualdad de cadenas.
- Parsee el JSON solo cuando la firma se haya verificado.
- 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