Content Security Policy (CSP) es un mecanismo de seguridad del navegador con el que una web declara de qué orígenes pueden cargarse scripts, estilos, marcos y otros contenidos, limitando el impacto de los ataques de inyección.
Cómo funciona CSP
El servidor envía la política en la cabecera de respuesta HTTPContent-Security-Policy. El navegador se niega entonces a cargar o ejecutar todo lo que la política no permita. Directivas importantes:
- default-src y script-src: orígenes permitidos para contenido y JavaScript; los scripts en línea se bloquean salvo que lleven un nonce o un hash coincidente;
- ‘strict-dynamic’: confía en los scripts cargados por scripts ya confiables, lo que hace prácticas las políticas basadas en nonce;
- frame-ancestors: qué sitios pueden incrustar la página en un marco;
- connect-src y form-action: adónde puede enviar datos la página;
- report-to: adónde se envían los informes de infracciones.
La cabecera Content-Security-Policy-Report-Only permite probar una política sin bloquear nada. CSP está estandarizada por el W3C; la versión actual es el Nivel 3.
Por qué importa CSP
CSP es una capa de defensa en profundidad contra el cross-site scripting: aunque un atacante logre inyectar una etiqueta script, el navegador no la ejecutará. La directiva frame-ancestors impide el clickjacking, y restringir los destinos de conexión dificulta que los skimmers de formjacking envíen los datos de tarjetas robados a dominios de los atacantes. Pero una política vale lo que valen sus reglas: permitir ‘unsafe-inline’ o dominios CDN enteros suele hacerla trivial de eludir.
Buenas prácticas
- Preferir políticas estrictas basadas en nonce o hash frente a largas listas de dominios permitidos.
- Evitar ‘unsafe-inline’ y ‘unsafe-eval’.
- Desplegar primero en modo report-only y vigilar los informes de infracciones.
- Tratar CSP como complemento de la codificación de salida y la validación de entradas, no como sustituto.





