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
- 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'. - Una semana en
Report-Onlyy 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-Bysecurityheaders.com da A o superior en el despliegue de prueba
Archivos
¿Te la quedas?
- 1. Haz un fork y crea la rama
tarea/SEG-011-anadir-content-security-policy-con-nonce. - 2. En tareas/seguridad/SEG-011-anadir-content-security-policy-con-nonce.md, cambia la cabecera:
estado: reservada asignada: tu_usuario_de_github
- 3. Abre un PR con ese cambio (commit firmado:
git commit -s). Al fusionarse, es tuya durante 14 días.