Buenas prácticas de seguridad

Guía para integrar de forma segura la API de NU Signal Partners.

Proteja los secretos

  • Los secretos de claves y sales de ID solo se muestran o conocen una vez. Guárdelos en un gestor; nunca en control de código, bundles de cliente, registros ni informes de error.
  • Si se expone un secreto, revóquelo o rótelo de inmediato (Claves de API).

Use las claves solo en el servidor

  • Llame a la API desde el backend. Nunca incluya claves nsp_test_ o nsp_live_ en navegadores, apps móviles ni clientes distribuidos.
  • Pase por su servidor todo flujo iniciado por el cliente, como pedir tokens, para mantener privados la clave y la sal del espectador.

Rote las claves con regularidad

  • Rote periódicamente y ante sospecha de exposición con overlap-and-revoke: cree, despliegue, verifique y revoque la clave anterior. Revocar no cancela tokens ni sesiones ya emitidos; caducan por su TTL, así que manténgalo corto.

Aplique hash al ID del espectador: sin PII

  • viewer_id_hash debe ser SHA-256(stable_viewer_id + salt), calculado por usted. Production acepta exactamente 64 caracteres hexadecimales en minúscula. Nunca envíe emails, teléfonos ni ID de dispositivo sin tratar. NU no recibe ni guarda PII original (API de reproducción).
  • La misma regla se aplica a preferences: envíe solo preferencias sin PII. Los valores con @ o espacios se rechazan con 422 validation_failed.

Restrinja orígenes e IP

  • Configure allowed_origins para emitir tokens solo a sus dominios y allowed_ips para limitar las solicitudes a sus servidores (Claves de API).

Use ámbitos de privilegio mínimo

  • Conceda a cada clave solo lo necesario; por ejemplo, la ingesta necesita events:write, no settlement:dispute. Separe cargas masivas y sensibles (Autenticación).
  • Mantenga api_keys:write solo en una clave operativa de bóveda. No conceda gestión de claves a claves de reproducción o eventos.

No exponga las URL de reproducción

  • webview_url y los manifests HLS/DASH firmados duran poco (1.800 segundos por defecto, máximo 7.200; tope predeterminado de Production 1.800) e incluyen tokens. Trátelos como secretos: no los registre, almacene ni comparta tras expires_at, ni incluya webview_url en enlaces compartibles. Reemita y abra webview_url solo en el WebView o iframe del espectador.