Generador de políticas de seguridad de contenidos (CSP)
Crea una cabecera Content-Security-Policy activando o desactivando directivas; obtén la cabecera HTTP y la etiqueta <meta>.
Respuesta rápida: Content Security Policy (CSP) Generator: Funciona en tu navegador, gratis, sin registro.
Última actualización
Preguntas frecuentes
- ¿Qué es una política de seguridad de contenidos?
- Es una cabecera que indica al navegador exactamente qué orígenes pueden cargar scripts, estilos, imágenes, fuentes y marcos en tu página. Una CSP correctamente ajustada evita la mayoría de los ataques XSS, incluso si existe alguna vulnerabilidad en la validación de entradas.
- ¿Debo implementarla como cabecera o como etiqueta meta?
- Como cabecera, siempre que sea posible: la CSP mediante etiqueta meta admite menos directivas (no <code>frame-ancestors</code>, <code>sandbox</code> ni <code>report-uri</code>). Usa la etiqueta meta solo si no puedes modificar las cabeceras de respuesta del servidor.
- ¿Por qué es mala idea usar <code>'unsafe-inline'</code> en <code>script-src</code>?
- Indica al navegador que se permiten etiquetas <code><script></code> en línea, precisamente lo que inyectan la mayoría de los ataques XSS. Migra a nonces o hashes; los frameworks modernos facilitan este proceso.
- ¿Y <code>'unsafe-eval'</code>?
- Permite <code>eval()</code> y <code>new Function()</code>. Algunos empaquetadores, como configuraciones antiguas de webpack o determinadas bibliotecas de plantillas, lo necesitan; las alternativas modernas no. Revísalo antes de mantenerlo.
- ¿Debo incluir <code>upgrade-insecure-requests</code>?
- Sí, si tu sitio usa exclusivamente HTTPS: actualiza automáticamente las solicitudes <code>http://</code> de tu HTML a <code>https://</code>, corrigiendo las advertencias de contenido mixto sin modificar el código.
- ¿Qué diferencia hay entre <code>frame-src</code> y <code>frame-ancestors</code>?
- <code>frame-src</code> controla qué puedes incrustar; <code>frame-ancestors</code> controla quién puede incrustarte. Esta última sustituye a la cabecera antigua <code>X-Frame-Options</code>.
- ¿Cómo pruebo la política?
- Primero impleméntala mediante <code>Content-Security-Policy-Report-Only</code> (cambia el nombre de la cabecera). Los navegadores informarán de las infracciones a <code>report-uri</code> sin aplicarla, así podrás corregir problemas antes de activarla.
- ¿La política bloquea la analítica de terceros?
- Solo si no la permites. Añade los orígenes de analítica, por ejemplo <code>https://www.google-analytics.com</code>, a <code>script-src</code> y <code>connect-src</code>.
- ¿Se sube mi configuración?
- No: todo el generador se ejecuta en tu navegador. La política generada nunca sale de tu dispositivo.
- ¿Cómo genero nonces para cada solicitud?
- Tu servidor genera un nonce aleatorio nuevo para cada respuesta y lo inserta tanto en la cabecera CSP (<code>'nonce-XYZ'</code>) como en cada etiqueta <code><script></code> en línea. La mayoría de los frameworks modernos incluyen una función auxiliar para ello.