Content Security Policy: meta http-equiv
Configure una Content Security Policy mediante meta http-equiv
Content Security Policy: meta http-equiv es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué es CSP?
Content Security Policy es una política aplicada por el navegador que restringe qué recursos puede cargar y ejecutar una página. Es la defensa más sólida contra Cross-Site Scripting: incluso si un atacante inyecta una etiqueta <script>, el navegador se niega a ejecutarla a menos que la política lo permita.
Dos formas de implementarla
CSP puede enviarse como encabezado de respuesta HTTP (Content-Security-Policy: ...) o como etiqueta meta en HTML: <meta http-equiv="Content-Security-Policy" content="...">. Se recomienda el encabezado; la etiqueta meta resulta útil cuando no puede controlar el servidor.
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self' https://cdn.example.com">Directivas comunes
default-src es el valor de respaldo para los tipos de recursos no especificados. script-src, style-src, img-src, connect-src (XHR/fetch), font-src y frame-src restringen cada uno su tipo correspondiente. Incluya en la lista de permitidos orígenes específicos o utilice 'self' para permitir únicamente el mismo origen.
La palabra clave self
'self' (entre comillas) hace referencia al propio origen de la página. script-src 'self' significa "ejecutar únicamente scripts alojados en el mismo origen que la página". Esta es la base de la mayoría de las políticas; añada CDN externos específicos cuando sea necesario.
Bloqueo de scripts en línea
De forma predeterminada, CSP bloquea todas las etiquetas <script> en línea y los atributos de controladores de eventos (onclick). Esta es la protección más sólida contra XSS: un <script> inyectado no puede ejecutarse porque está en línea. Traslade todos los scripts a archivos externos referenciados mediante src.
Nonces y hashes
Para los scripts en línea necesarios, utilice un nonce: el servidor genera un token aleatorio por solicitud, lo establece como script-src 'nonce-RANDOM' en CSP y añade nonce="RANDOM" a las etiquetas <script> legítimas. Los scripts inyectados no tienen el nonce y se bloquean.
<meta http-equiv="Content-Security-Policy"
content="script-src 'nonce-abc123'">
<script nonce="abc123">// allowed</script>
<script>// blocked — no nonce</script>unsafe-inline y unsafe-eval
'unsafe-inline' vuelve a permitir scripts y estilos en línea. 'unsafe-eval' vuelve a permitir eval() y new Function(). Ambos debilitan gravemente CSP; utilícelos solo como último recurso durante una migración y planifique eliminarlos.
Limitaciones de la etiqueta meta
La CSP entregada mediante una etiqueta meta no puede utilizar la directiva report-uri ni otras funciones de generación de informes. Además, entra en vigor más tarde que un encabezado: cualquier contenido anterior a la etiqueta meta queda sin protección. Los encabezados son estrictamente mejores; utilice meta solo como alternativa.
Modo de solo informes
Pruebe una política nueva sin interrumpir el sitio: Content-Security-Policy-Report-Only: .... El navegador informa de las infracciones sin bloquearlas, de modo que puede ajustar la política hasta permitir todos los recursos legítimos antes de activar la aplicación efectiva.
Errores comunes
Olvidar style-src 'unsafe-inline' bloquea los estilos en línea, que a menudo generan los frameworks. Olvidar connect-src bloquea las solicitudes AJAX a las API. Pruebe siempre primero la política en modo de solo informes y revise la consola para detectar los recursos bloqueados.
Estrategia CSP moderna
Una CSP estricta combina script-src 'nonce-RANDOM' 'strict-dynamic' para los scripts con una lista de permitidos restrictiva para todo lo demás. 'strict-dynamic' permite que los scripts con nonce carguen otros scripts sin enumerar cada uno, lo que facilita mucho el mantenimiento frente a las listas de permitidos por origen.
Comprobación de conocimientos
¿Cómo se defiende CSP contra los ataques XSS incluso cuando un atacante logra inyectar una etiqueta de script?
Resumen
CSP es una política aplicada por el navegador que restringe qué scripts, estilos, imágenes y otros recursos pueden cargarse. Puede implementarse mediante un encabezado de respuesta (opción preferida) o una etiqueta meta. Utilice nonces para los scripts en línea necesarios, evite unsafe-inline y unsafe-eval y pruebe primero en modo de solo informes. La CSP estricta con 'nonce-X' 'strict-dynamic' es la base moderna.
Preguntas frecuentes
¿La lección «Content Security Policy: meta http-equiv» es gratis?
Sí — el texto completo de «Content Security Policy: meta http-equiv» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Content Security Policy: meta http-equiv»?
Configure una Content Security Policy mediante meta http-equiv Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Content Security Policy: meta http-equiv»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Content Security Policy: meta http-equiv
- XSS mediante innerHTML y cómo prevenirlo
- Sandbox de iframe y Permissions Policy
- HTTPS e integridad de subrecursos