MDH GROUP · BLOG

Webhooks seguros en Affilentra: firmas, protección contra reproducción y buenas prácticas de verificación

Los webhooks son la columna vertebral de las integraciones automáticas entre Affilentra, proveedores de pagos, herramientas contables y sistemas de socios. Sin firmas seguras y protección contra reproducción, estas conexiones son vulnerables a manipulaciones, pagos duplicados o facturas falsas.

← Todos los artículos

Webhooks seguros en Affilentra: firmas, protección contra reproducción y buenas prácticas de verificación

Introducción

Los webhooks son la columna vertebral de las integraciones automatizadas entre Affilentra, proveedores de pagos, herramientas contables y sistemas de socios. Sin firmas seguras y protección contra reproducción, estas conexiones se convierten en una superficie de ataque: pueden producirse eventos manipulados, pagos duplicados o liquidaciones falsificadas. Este artículo muestra de forma práctica cómo los comerciantes y operadores de red en la plataforma self‑hosted Affilentra deben firmar los webhooks entrantes y salientes, prevenir ataques de reproducción y verificar las integraciones de manera robusta.

Principios básicos de la seguridad de Webhooks

La protección de los webhooks se basa en pocos pero esenciales componentes:

  • Secretos confidenciales (Shared Secrets) por integración
  • Comprobación de la integridad de la payload mediante firma (p. ej. HMAC)
  • Protección contra reproducción mediante marca temporal y nonces
  • HTTPS/TLS para el cifrado del transporte
  • Registro, monitorización y rotación de claves

Affilentra admite estos mecanismos según roles: los operadores de software administran claves del sistema, los comerciantes definen secretos de integración y los socios reciben enlaces de seguimiento y registros de pago rastreables.

Webhooks entrantes: pasos de validación para comerciantes

Cuando terceros (p. ej. proveedores de pagos) envían eventos a su instancia de Affilentra, debe realizar las siguientes comprobaciones antes de desencadenar acciones:

1) Comprobación del transporte

  • Aceptar solo HTTPS. Redirija las solicitudes HTTP a HTTPS o rechácelas.

2) Validación de la firma

Exija una firma HMAC que se genere sobre el cuerpo bruto (raw) de la solicitud y un secreto compartido. Nombre de encabezado recomendado: X‑Affilentra‑Signature. Procedimiento:

  • Calcule HMAC‑SHA256(raw_body, secret) → hex/base64
  • Compare con el valor del encabezado usando una función de comparación de tiempo constante

Importante: firme el texto bruto recibido exactamente (no el JSON parseado) para evitar problemas de canonicalization.

3) Marca temporal y protección contra reproducción

Además solicite una marca temporal en el encabezado (p. ej. X‑Affilentra‑Timestamp) y verifique:

  • La marca temporal está dentro de una ventana corta (p. ej. ±300 segundos) relativa al tiempo del sistema.
  • Opcional: verifique un X‑Affilentra‑Nonce adicional y almacene nonces usados durante la duración de la ventana temporal. Cada nonce solo puede aceptarse una vez.

Con marca temporal + nonce evita que una solicitud interceptada se vuelva a reproducir más tarde.

4) ID de evento e idempotencia

Exija en la carga útil un ID de evento único (p. ej. event_id). Establezca que cada ID de evento se procese una sola vez; en entregas repetidas el procesamiento debe ser idempotente y devolver un 2xx con la indicación correspondiente.

Outgoing Webhooks: Firmar eventos de Affilentra

Si su instalación de Affilentra envía eventos a proveedores de pagos, sistemas contables o socios, aplique lo siguiente: firme las solicitudes salientes de manera coherente y documente el formato para los socios de integración.

Encabezado de firma

  • Incluir: X-Affilentra-Timestamp, X-Affilentra-Signature, opcional X-Affilentra-Nonce
  • Cadena para firmar: concatenación de timestamp + '.' + raw_body

Flujo de ejemplo: timestamp = segundos UNIX actuales; signature = HMAC-SHA256(timestamp + '.' + raw_body, provider_secret)

Entrega y acuse de recibo

  • Espere del receptor una respuesta 2xx. En caso de 5xx o errores de red: reintentos con retroceso exponencial.
  • En 4xx: no realice reintentos automáticos sin revisión manual (p. ej. 401 = firma/secret erróneo).
  • Registre la petición, el código de respuesta, la duración y el resultado de la verificación de la firma para auditorías.

Prevenir ataques de reproducción: conceptos prácticos

La protección contra replay combina mecanismos sencillos que, juntos, son eficaces:

  • Ventana temporal corta para timestamps válidos (p. ej. 2–5 minutos).
  • Almacenamiento persistente de nonces/IDs de evento usados durante la duración de la ventana temporal.
  • Procesamiento idempotente mediante verificaciones de ID de evento.
  • Detección de entregas múltiples: clases de registro diferenciadas (advertencia vs. error).

En un entorno self-hosted como Affilentra puede almacenar caches de nonce en Redis o en la base de datos con TTL; lo importante es que el almacenamiento sea lo suficientemente rápido para verificar solicitudes paralelas de manera consistente.

Verificación y manejo de errores

Los casos de error deben ser transparentes y manejables:

  • En errores de firma: 401 Unauthorized + registro con Request-ID, pero sin incluir el contenido de la carga útil en los logs si hay datos sensibles.
  • En errores de timestamp/nonce: 400 Bad Request con una descripción clara del error en el body.
  • En entregas repetidas: 200 OK si el evento ya fue procesado, y devolver un indicador, p. ej. {"status":"duplicate","event_id":...}.
  • Alerta: ante una tasa inusualmente alta de errores de firma o timestamp, generar alertas automáticas para operadores y comerciantes.

Recomendaciones operativas y gestión de secretos

La gestión basada en roles es central en Affilentra: los operadores de software administran la plataforma, los comerciantes configuran los secretos de integración y los socios usan claves dedicadas. Medidas recomendadas:

  • Un secret distinto por integración; no reutilizar.
  • Almacenar los secrets en variables de entorno o en gestores de secretos (p. ej., HashiCorp Vault); nunca en el código ni en repositorios públicos.
  • Rotación regular de claves (p. ej., cada 90 días) con una fase de transición en la que se aceptan la clave antigua y la nueva.
  • Registros de auditoría para el uso y la rotación de claves.
  • Restringir el acceso por IP a los endpoints de webhook cuando sea posible (lista blanca) — como medida complementaria, no como sustituto de las firmas.

Ejemplo práctico: flujo HMAC‑SHA256 (conceptual)

Así podría ser un flujo mínimo de firma en Affilentra:

  • Remitente: genera timestamp, raw_body y nonce; signature = HMAC‑SHA256(timestamp + '.' + raw_body, shared_secret).
  • Remitente: envía un POST al destinatario con los encabezados X‑Affilentra‑Timestamp, X‑Affilentra‑Nonce, X‑Affilentra‑Signature y el raw_body.
  • Receptor (Affilentra): verifica TLS, lee el raw_body, valida el timestamp frente al reloj del sistema, comprueba la caché de nonces, calcula el HMAC y compara las firmas en tiempo constante, valida event_id y procesa de forma idempotente.

Estos pasos se presentan de forma deliberadamente sencilla; en la implementación debe asegurarse el uso de comparaciones en tiempo constante, nonces seguros generados aleatoriamente y registros de errores robustos.

Indicaciones por roles para usuarios de Affilentra

  • Comerciantes: Cree secrets separados por proveedor de pagos (Payout‑Provider) y por herramienta contable. Utilice las configuraciones de Affilentra para hacer obligatorias las exigencias de firma.
  • Operadores de red: Proporcione un monitoreo centralizado y exija a los socios encabezados que permitan comprobar la integridad. Use las ediciones PRO & NETWORK para una asignación granular de permisos.
  • Socios/Publicadores: Verifiquen localmente los webhooks salientes de Affilentra antes de su procesamiento y documenten los encabezados esperados y las event‑IDs.

Conclusión y siguiente paso

Operar webhooks de forma segura requiere la aplicación consistente de firmas, protección contra replay y controles operativos. En la plataforma Affilentra self‑hosted puede configurar estos mecanismos basados en roles para asegurar de forma fiable las integraciones con Payout‑Providers, herramientas contables y sistemas de socios. Si busca una solución segura, autoalojada, con licencia permanente y sin participación en los ingresos, considere las ediciones PRO & NETWORK.

Actúe ahora: Elija cómo empezar y descubra cómo Affilentra protege de forma robusta sus integraciones de webhooks: https://affilentra.de

Siguiente paso

Probar Affilentra

Plataforma unificada que reúne la entrega de productos, el seguimiento, la validación de conversiones, el cálculo de comisiones y los pagos con roles claramente separados; opción de instalación autohospedada con licencia perpetua sin participación en los ingresos; los comerciantes mantienen el control sobre productos, condiciones y materiales publicitarios; los socios reciben enlaces de seguimiento personales e historiales de pagos verificables.

Comenzar