Los headers de seguridad HTTP son instrucciones que tu servidor envía al navegador del visitante. Le dicen al navegador cómo manejar el contenido de tu sitio y qué restricciones aplicar. Sin ellos, tu WordPress queda expuesto a ataques como XSS, clickjacking y MIME sniffing.

El 82% de los sitios WordPress que escaneamos en Chile no tiene configurados los headers básicos de seguridad. La buena noticia: configurarlos toma menos de 10 minutos.

¿Por qué importan los headers de seguridad?

Imagina tu sitio como una casa. WordPress es la estructura, los plugins son las ventanas y puertas, y los headers de seguridad son las cerraduras y alarmas. Puedes tener la mejor estructura, pero sin cerraduras, cualquiera entra.

Los headers de seguridad:
– Previenen ataques XSS (Cross-Site Scripting)
– Bloquean clickjacking (tu sitio embebido en un iframe malicioso)
– Fuerzan HTTPS (evitan downgrades a HTTP)
– Controlan qué recursos puede cargar tu sitio (previenen inyección de scripts)
– Mejoran tu score de seguridad en auditorías

Los 7 headers esenciales

1. Strict-Transport-Security (HSTS)

Qué hace: Fuerza al navegador a usar siempre HTTPS. Una vez que el navegador recibe este header, nunca intentará conectarse por HTTP.

“`apache
Header set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”
“`

– `max-age=31536000`: Recordar por 1 año
– `includeSubDomains`: Aplicar a todos los subdominios
– `preload`: Permite incluirse en la lista de preload de navegadores

2. Content-Security-Policy (CSP)

Qué hace: Define qué recursos (scripts, estilos, imágenes, fuentes) puede cargar tu sitio. Es la defensa más potente contra XSS.

“`apache
Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ https://www.googletagmanager.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https:; font-src ‘self’; frame-src https://www.google.com”
“`

Importante: CSP puede romper funcionalidades si es muy restrictivo. Empieza con `Content-Security-Policy-Report-Only` para detectar problemas sin bloquear nada.

3. X-Frame-Options

Qué hace: Previene que tu sitio sea embebido en un iframe. Esto bloquea ataques de clickjacking donde un atacante pone tu sitio invisible sobre un botón malicioso.

“`apache
Header set X-Frame-Options “SAMEORIGIN”
“`

Opciones:
– `DENY`: Nunca permitir iframes
– `SAMEORIGIN`: Solo permitir iframes desde tu mismo dominio

4. X-Content-Type-Options

Qué hace: Previene MIME sniffing — cuando el navegador “adivina” el tipo de archivo en vez de confiar en el Content-Type del servidor. Un atacante podría subir un archivo .jpg que en realidad es un script.

“`apache
Header set X-Content-Type-Options “nosniff”
“`

5. Referrer-Policy

Qué hace: Controla cuánta información de la URL de origen se envía cuando un visitante navega desde tu sitio a otro.

“`apache
Header set Referrer-Policy “strict-origin-when-cross-origin”
“`

Esto envía el dominio (no la URL completa) cuando el visitante sale de tu sitio, protegiendo URLs con información sensible.

6. Permissions-Policy

Qué hace: Controla qué APIs del navegador puede usar tu sitio (cámara, micrófono, geolocalización, etc.).

“`apache
Header set Permissions-Policy “camera=(), microphone=(), geolocation=(), payment=(self)”
“`

Para un WordPress típico, desactiva todo lo que no necesites.

7. X-XSS-Protection

Qué hace: Activa el filtro XSS integrado del navegador. Aunque los navegadores modernos tienen protección propia, este header agrega una capa extra.

“`apache
Header set X-XSS-Protection “1; mode=block”
“`

Configuración completa para .htaccess

Copia esto al inicio de tu archivo `.htaccess` en la raíz de WordPress:

“`apache
# ── Security Headers ──

Header set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”
Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ https://www.googletagmanager.com https://www.google-analytics.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https:; font-src ‘self’ data:; frame-src https://www.google.com https://www.youtube.com; connect-src ‘self’ https://www.google-analytics.com”
Header set X-Content-Type-Options “nosniff”
Header set X-Frame-Options “SAMEORIGIN”
Header set X-XSS-Protection “1; mode=block”
Header set Referrer-Policy “strict-origin-when-cross-origin”
Header set Permissions-Policy “camera=(), microphone=(), geolocation=(), payment=(self)”

“`

Verificar los headers

Después de configurar, verifica que estén funcionando:

1. Abre DevTools (F12) → pestaña Network → clic en la primera petición → Headers
2. Usa curl: `curl -I https://tusitio.cl`
3. Usa nuestro escáner gratuito: [wpseguro.cl](https://wpseguro.cl) — verifica los 7 headers automáticamente

Errores comunes

– CSP muy restrictivo: Rompe plugins como Elementor, WooCommerce o Google Analytics. Usa `Content-Security-Policy-Report-Only` primero
– No incluir ‘unsafe-inline’: WordPress usa scripts inline. Sin esta directiva, muchas funcionalidades se rompen
– Olvidar subdominios en HSTS: Si tienes subdominios sin SSL, `includeSubDomains` los romperá
– Duplicar headers: Algunos plugins de seguridad agregan headers. Verifica que no se dupliquen

—

¿No quieres configurar los headers manualmente?

Nuestro servicio de hardening incluye la configuración de todos los headers de seguridad, adaptados a los plugins y funcionalidades específicas de tu sitio.

[Ver planes de hardening →](https://wpseguro.cl/#precios)

—

Los headers de seguridad son una de las medidas más efectivas y fáciles de implementar. No hay excusa para no tenerlos.

Sigue leyendo
Sin categoría
Los 5 Plugins de Seguridad WordPress que Realmente Funcionan (2026)
Sin categoría
Cómo Proteger tu Tienda WooCommerce: Guía de Seguridad 2026
FM
Francisco Moroso

Audito la seguridad de sitios WordPress: núcleo, plugins, temas, base de datos y servidor. Escribo aquí lo que veo una y otra vez en el trabajo real.

franciscomoroso.com