Guía · 3 min de lectura

Content-Security-Policy sin romper tu sitio

Una CSP indica al navegador en qué orígenes de scripts, estilos e imágenes confiar. Es tu mejor defensa contra scripts inyectados y skimmers de tarjetas, y premia una implantación cuidadosa.

Actualizado el · HackGrade

El código y la configuración se mantienen en inglés.

1. Empieza en modo de solo informe

El navegador informa de las infracciones en la consola, pero no bloquea nada.

nginx
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'" always;

2. Navega por tu sitio y lee la consola

Abre DevTools → Console en tus páginas clave (inicio, un producto, el carrito y el pago, el formulario de contacto). Ahí aparece cada origen bloqueado. Añade los que sean de confianza, como https://www.googletagmanager.com o tu proveedor de pagos, a la directiva correspondiente.

3. Aplícala

Cuando la consola esté tranquila, cambia el nombre de la cabecera a Content-Security-Policy. Mantén la cabecera de solo informe a su lado mientras pruebas una versión más estricta.

.htaccess
Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'"

Consejos para WordPress

  • Muchos temas y plugins usan scripts en línea. Al principio puede que necesites 'unsafe-inline' en script-src. Es más débil, pero frame-ancestors, object-src y base-uri siguen ayudando.
  • Para una política estricta, usa nonces: WordPress 5.7+ puede añadir atributos a los scripts impresos con wp_print_inline_script_tag().
  • Pon primero una CSP estricta en tu pago, donde más importa.

Directivas útiles

  • frame-ancestors 'self': el sustituto moderno de X-Frame-Options.
  • upgrade-insecure-requests: actualiza automáticamente los recursos http:// a https://.
  • connect-src: limita adónde pueden enviar datos los scripts, algo útil contra los skimmers.

Fuentes

Guías relacionadas

Gratis · Al instante · Sin registro

Conoce tu nota antes que nadie.

Análisis pasivo. Nada se ataca sin tu permiso.

Empieza gratis. Planes de pago desde 12 $ al mes, o un informe único por 29 $. Ver precios