Content Security Policy indica al navegador qué orígenes pueden proporcionar scripts, estilos, imágenes, fuentes, frames y conexiones de red. Su principal valor es reducir lo que puede ejecutar o cargar un contenido inyectado.
Content Security Policy (CSP): reducir riesgos XSS y cargas no deseadas
Aprende a implantar una CSP de forma progresiva, sus directivas principales, Report-Only, nonces y errores frecuentes.
Mostrar el índice
Empieza observando
Una CSP estricta aplicada de golpe puede romper una web real. Haz primero un inventario de recursos propios y de terceros y, cuando sea necesario, comienza con Content-Security-Policy-Report-Only. Así puedes observar infracciones sin bloquear recursos inmediatamente.
El generador CSP ayuda a construir una política inicial.
Entiende las directivas principales
default-src actúa como respaldo. script-src y style-src requieren especial atención porque el código ejecutable y el contenido inline son superficies frecuentes de riesgo. img-src, font-src, connect-src, frame-src y object-src restringen otras capacidades. Es preferible declarar orígenes concretos antes que comodines amplios.
frame-ancestors protege frente a incrustaciones no deseadas, pero solo funciona mediante cabecera HTTP, no dentro de una etiqueta meta CSP. El modo Report-Only también se entrega mediante cabecera HTTP.
Autoriza el contenido inline de forma precisa
'unsafe-inline' debilita una de las principales ventajas de CSP. Cuando el contenido inline sea inevitable, los nonces o hashes CSP permiten autorizar bloques concretos. Un nonce debe ser impredecible y generarse de nuevo en cada respuesta.
CSP es defensa en profundidad
CSP no sanea HTML no confiable ni corrige una autorización defectuosa. Combínala con renderizado seguro, HTTPS y cabeceras de seguridad.
Endurece la política de forma progresiva
Empieza con reporting, elimina excepciones innecesarias, prueba los recorridos críticos y después activa el bloqueo. Revisa la política cuando cambien analytics, publicidad, fuentes u otros servicios externos.