Cómo corregir un encabezado CSP (Content Security Policy) ausente | Scanthra

Scanthra · 7 min de lectura · Actualizado Mayo de 2026

Mayo de 2026
TL;DR: Un encabezado CSP (Content Security Policy) ausente es el problema detectado más frecuente en los informes de Scanthra. Permite que un único script inyectado ejecute cualquier código en el navegador de tu visitante. Puedes añadir una CSP de inicio segura en menos de 10 minutos — sin romper tu sitio — desplegándola primero en modo solo reporte.

¿Qué es el encabezado CSP (Content Security Policy)?

CSP es un encabezado HTTP de respuesta que le dice al navegador exactamente qué fuentes de scripts, estilos, imágenes y frames puede cargar. Si algo en la página intenta cargar un script desde un dominio que no está en tu lista permitida, el navegador lo rechaza. Es como la lista de invitados para el portero de la entrada.

Sin CSP, cualquier etiqueta <script> inyectada — desde un plugin hackeado, un error en un widget de terceros, un XSS almacenado en un comentario — se ejecuta con acceso total a las cookies, datos de formularios y sesión de tus visitantes. Con una CSP estricta, la misma inyección queda bloqueada silenciosamente y registrada.

Por qué esto importa para una pequeña empresa

Dos ejemplos del mundo real que vemos semanalmente en los informes de Scanthra:

CSP también es explícitamente recomendada por OWASP (estándar de seguridad de apps), esperada por la mayoría de los cuestionarios de ciberseguro, y — para empresas de la UE — una parte sensata de las «medidas técnicas adecuadas» exigidas por el RGPD Artículo 32 y la NIS2 (directiva UE de ciberseguridad).

El despliegue seguro: primero en modo solo reporte

La mayor razón por la que los sitios pequeños evitan CSP es el miedo a romper el diseño. La solución: despliega primero Content-Security-Policy-Report-Only. El navegador verifica la política e informa de las infracciones, pero no las aplica. Observa los registros durante una semana, corrige lo que se bloquea y luego cambia al encabezado que sí aplica.

Una política de inicio que funciona para la mayoría de sitios

Content-Security-Policy-Report-Only:
  default-src 'self';
  script-src 'self' https://www.googletagmanager.com https://www.google-analytics.com;
  style-src  'self' 'unsafe-inline' https://fonts.googleapis.com;
  font-src   'self' https://fonts.gstatic.com;
  img-src    'self' data: https:;
  connect-src 'self' https://www.google-analytics.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self';
  upgrade-insecure-requests

Esta política asume que sirves todo desde tu propio dominio más Google Analytics + Google Fonts. Casi todos los sitios WordPress, Shopify o estáticos encajan aquí con pequeños ajustes. Elimina o reemplaza las líneas de GA/Fonts si no las usas.

Cómo desplegar en nginx

add_header Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests" always;

Cómo desplegar en Apache

Header always set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests"

Cómo desplegar en Cloudflare

En tu panel de Cloudflare ve a Reglas → Reglas de transformación → Modificación de encabezados HTTP de respuesta. Añade un encabezado llamado Content-Security-Policy-Report-Only con la política anterior como valor. Esta es la opción más rápida si no tienes acceso por shell a tu servidor.

Cómo desplegar en WordPress

Instala un plugin de encabezados como Headers Security Advanced & HSTS WP o añade los encabezados desde tu panel de alojamiento. Evita configurar CSP dentro del functions.php de un tema — muchos temas cargan activos del panel WP o del editor de bloques dinámicamente y eso rompe la experiencia del editor.

Problemas habituales

De solo reporte a aplicación

Después de una semana en modo solo reporte sin nuevas infracciones en tráfico real, renombra el encabezado de Content-Security-Policy-Report-Only a Content-Security-Policy. La política ahora se aplica. Mantén el endpoint de reporte — detectarás nuevas infracciones en el momento en que una actualización de plugin introduzca un script inesperado.

Cómo Scanthra detecta esto

Nuestro módulo Encabezados de Seguridad hace una única solicitud GET a tu página de inicio y lee los encabezados de respuesta. Si Content-Security-Policy está ausente, es débil o contiene unsafe-eval, obtendrás un problema detectado con gravedad, descripción en lenguaje claro y una solución lista para copiar — el mismo formato que en este artículo.

¿Quieres saber si tu sitio tiene este problema?

Scanthra hace una revisión pasiva y amigable, y te envía por correo electrónico un informe de seguridad en PDF fácil de entender.

Analiza tu sitio gratis