Generador de Content Security Policy (CSP)
Crea una Content-Security-Policy directiva a directiva, expórtala como cabecera, meta etiqueta o configuración de Nginx o Apache, y recibe avisos de ajustes inseguros.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests">
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" always;
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests"
Importar una política existente
¿Qué es Generador de CSP?
Este generador de CSP te ayuda a escribir una Content-Security-Policy que limita desde dónde pueden cargarse scripts, estilos, imágenes, frames y otros recursos. Parte de una política estricta, te deja editar cada directiva y evalúa el resultado en tiempo real, avisando de debilidades como 'unsafe-inline', fuentes de script comodín, object-src o base-uri ausentes y palabras clave sin comillas. También puedes importar una política existente.
Cómo usar Generador de CSP
- Parte de la Política inicial estricta o de Borrar todo.
- Edita las fuentes de cada directiva, p. ej.
'self' https://cdn.example.com. - Activa o desactiva upgrade-insecure-requests y añade un report-uri si hace falta.
- Lee la evaluación de la política y corrige los hallazgos de gravedad alta y media.
- Copia la política como cabecera HTTP, meta etiqueta o línea de Nginx o Apache; o importa una política existente para analizarla.
Ejemplo
Strict starter policy
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
Cuándo usar Generador de CSP
Úsalo para redactar o revisar una CSP antes de desplegarla. Implanta las políticas nuevas primero con Content-Security-Policy-Report-Only y vigila las infracciones, porque una política estricta romperá los scripts en línea y los widgets de terceros que olvidaste permitir. Las comprobaciones son estáticas y no pueden ver qué scripts cargan realmente tus páginas.
Cómo funciona Generador de CSP
Las directivas se serializan en un orden fijo como name source source; …, omitiendo las vacías. La evaluación aplica reglas estáticas similares a las del CSP Evaluator de Google: palabras clave como self o none deben ir entre comillas; se señala un script-src (o default-src como alternativa) sin nonce/hash que contenga 'unsafe-inline', 'unsafe-eval', *, http:, https: o data:; object-src debería ser 'none'; y base-uri, frame-ancestors y form-action deberían estar definidas. La versión de meta etiqueta omite frame-ancestors, report-uri, report-to y sandbox, que los navegadores ignoran en las meta etiquetas.
Casos de Uso Comunes
- Crear una primera CSP estricta para un sitio nuevo.
- Auditar una política copiada de producción en busca de 'unsafe-inline' y comodines.
- Añadir correctamente un host de analítica o de CDN a script-src.
- Obtener la línea add_header exacta de Nginx para una política.
Preguntas Frecuentes
¿Por qué 'unsafe-inline' es un problema?
Permite cualquier script en línea, incluido uno inyectado a través de un fallo XSS, lo que anula el objetivo principal de la CSP. Usa nonces o hashes en su lugar.
¿Cabecera o meta etiqueta?
Es preferible la cabecera HTTP. Una meta etiqueta no puede usar frame-ancestors, report-uri ni sandbox, y solo se aplica al contenido que va después de ella.
¿Cómo pruebo sin romper mi sitio?
Envía la misma política como Content-Security-Policy-Report-Only; los navegadores informan de las infracciones en la consola sin bloquear nada.