Saltar al contenido
Banco de tareas

SEG-011SeguridadImportante

Añadir Content-Security-Policy con nonce

Dificultad
Media
Estimación
6h
Estado
Abierta
Habilidades
nextjshttp-headerscsp

Zona sensible. Toca permisos, datos personales, el mapa, secretos o la identidad de marca. Necesita revisión de la titular y conviene haber completado alguna tarea antes.

Contexto

Sin CSP, cualquier XSS (de una dependencia o de la atribución del mapa) roba sesiones, incluidas las de moderación, porque viven en localStorage. HSTS ya está activo y la cabecera X-Powered-By, retirada.

Qué hacer

  1. Generar un nonce por petición en el middleware y fijar Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-…' 'strict-dynamic'; connect-src 'self' https://*.supabase.co wss://*.supabase.co https://tiles.openfreemap.org; img-src 'self' data: blob: https://tiles.openfreemap.org; worker-src 'self' blob:; frame-ancestors 'none'; base-uri 'none'; form-action 'self'.
  2. Una semana en Report-Only y después aplicarla.

Criterios de aceptación

  • Los e2e pasan con la CSP aplicada

  • Un <script> sin nonce queda bloqueado (prueba documentada)

  • HSTS activo y sin X-Powered-By

  • securityheaders.com da A o superior en el despliegue de prueba

Archivos

¿Te la quedas?

  1. 1. Haz un fork y crea la rama tarea/SEG-011-anadir-content-security-policy-con-nonce.
  2. 2. En tareas/seguridad/SEG-011-anadir-content-security-policy-con-nonce.md, cambia la cabecera:
    estado: reservada
    asignada: tu_usuario_de_github
  3. 3. Abre un PR con ese cambio (commit firmado: git commit -s). Al fusionarse, es tuya durante 14 días.

Todo lo demás