Paso a Paso para la Verificación
Paso 1: Captura del Webhook
Cuando su servidor recibe un webhook de Kausanna, primero debe capturar el cuerpo del mensaje y los headers. Preste especial atención al headerx-hmac-hash, ya que contiene el hash HMAC que Kausanna utiliza para asegurar el mensaje.
Paso 2: Preparación de la Cadena para el Hash
Concatene la ruta completa de la URL (sin incluir el dominio) y el cuerpo del mensaje recibido. Esta concatenación es la que se utilizará para generar el hash de verificación. Asegúrese de no alterar el orden ni el contenido del mensaje durante este proceso.Paso 3: Generación del Hash HMAC
Usted ha recibido el secret key de Kausanna cuando configuró los webhooks. Esta clave secreta es
necesaria para generar el hash HMAC. El campo
secret en el objeto de configuración del webhook
en Kausanna es la clave secreta compartida. No se puede volver a ver después de que se haya
guardado.x-hmac-hash. Por ejemplo, si Kausanna utiliza SHA-256, debe usar SHA-256 en su servidor también.
secret es su clave secreta compartida, url es la URL completa del webhook y payload es el cuerpo del mensaje recibido.
Paso 4: Comparación de Hashes
Compare el hash HMAC que generó en el paso 3 con el valor del headerx-hmac-hash recibido en el webhook. Si los dos hashes son idénticos, puede confiar en que el webhook es auténtico y no ha sido modificado.
received_hmac para el hash del header x-hmac-hash y generated_hmac para el hash que generó.
Paso 5: Procesamiento del Webhook
Si la verificación es exitosa, proceda con el procesamiento normal del webhook. Si los hashes no coinciden, rechace el webhook y registre el evento para una revisión más detallada.Ejemplo de Verificación HMAC en Node.js
A continuación se muestra un ejemplo de cómo implementar la verificación HMAC en Node.js utilizando Express y el módulocrypto.
"your_secret" con su clave secreta compartida.
Vulnerabilidades y Consideraciones de Seguridad
Almacenamiento Seguro de la Clave Secreta
La clave secreta compartida es un componente crítico de la verificación HMAC. Debe almacenarse de forma segura y no debe exponerse públicamente. Si la clave secreta se ve comprometida, los atacantes pueden falsificar webhooks y realizar acciones no autorizadas en su sistema.Protección contra Ataques de Tiempo
Al comparar los hashes HMAC, es importante utilizar una comparación segura en tiempo para evitar ataques de temporización. La funcióncrypto.timingSafeEqual en Node.js proporciona una comparación segura en tiempo que evita la revelación de información a través de la sincronización de relojes.
Este tipo de ataque puede ser utilizado para adivinar la clave secreta a través de la comparación de tiempos de respuesta.
Registro de Intentos Fallidos
Es recomendable registrar los intentos fallidos de verificación de webhooks, ya que pueden indicar intentos de manipulación o errores en la configuración. El registro de estos eventos puede ayudar a identificar y mitigar posibles amenazas de seguridad.Rotación de Claves Secretas
Es una buena práctica rotar las claves secretas periódicamente para reducir el riesgo de exposición. Si sospecha que su clave secreta ha sido comprometida, debe cambiarla inmediatamente y actualizar la configuración de los webhooks en Kausanna.¿Que hacer en caso de compromiso de la clave secreta?
Si sospecha que su clave secreta ha sido comprometida, debe cambiarla inmediatamente y actualizar la configuración de los webhooks en Kausanna. Además, es recomendable revisar los registros de intentos fallidos de verificación de webhooks para identificar posibles actividades maliciosas. Pasos:- Cree un webhook con los eventos que desee recibir. Puede clonar un webhook existente.
- Copie la nueva clave secreta generada por Kausanna.
- Actualice la configuración de su servidor para utilizar la nueva clave secreta.
- Elimine el webhook comprometido, puede buscar por ID o por URL.

