La carta invisible que protege tu WordPress
Un café virtual para entender las cabeceras HTTP sin tecnicismos: qué son, para qué sirven y cómo configurarlas tú mismo.
¿Qué demonios son las cabeceras HTTP?
Imagina que tu navegador y el servidor de tu hosting son dos personas haciendo una mudanza. Cuando escribes tudominio.com, tu navegador manda una carta pidiendo la página. El servidor responde con los archivos… y una segunda carta pegada por fuera, invisible, con instrucciones de comportamiento. Esa carta son las cabeceras HTTP.
«Oye, necesito la página de inicio.»
Petición HTTP: el primer sobre que sale hacia el servidor.
«Aquí tienes el contenido — y unas normas para manejarlo.»
Junto al diseño, las fotos y los textos, viaja el sobre transparente: las cabeceras.
Dos misiones, ni una más
Toda esa información invisible sirve, en el fondo, para dos cosas.
Seguridad a prueba de bombas
Actúan como el guardaespaldas de tu discoteca particular: solo confían en tus scripts, bloquean fuentes extrañas y evitan que tu web quede atrapada en una trampa de otro sitio.
Rendimiento y SEO
Le dicen al navegador qué guardar en caché para que la próxima visita cargue volando. Y ya sabes: Google ama las webs rápidas.
Las cabeceras que de verdad importan
No hace falta aprenderse cincuenta. Con estas cinco, los escáneres de seguridad (GTmetrix, Security Headers…) suelen quedar contentos.
jack
X-Frame-Options
Evita que otros sitios metan tu página dentro de un iframe, previniendo ataques de clickjacking.
type
X-Content-Type-Options
Impide que el navegador «adivine» el tipo de archivo. Si dice imagen, es imagen — nada de scripts camuflados.
errer
Referrer-Policy
Controla cuánta información sobre la página de origen se comparte al hacer clic en un enlace externo.
mic
Permissions-Policy
Prohíbe usar la cámara, el micrófono o la geolocalización del visitante sin permiso explícito.
Content-Security-Policy
La madre de todas las cabeceras. Crea una lista blanca de dónde está permitido cargar imágenes, scripts, fuentes y estilos. La más compleja, la más potente.
Cómo configurarlas a mano
Sin plugins de trescientas líneas: directo al archivo de configuración de tu servidor.
- Conéctate por FTP o entra al Administrador de Archivos de tu cPanel / Plesk.
- Ve a la carpeta raíz de WordPress (donde están
wp-contentywp-config.php). - Busca el archivo
.htaccess— activa «mostrar archivos ocultos» si no aparece. - Pega el siguiente bloque justo antes de las reglas de WordPress.
<IfModule mod_headers.c> # Evita que tu web sea enmarcada en otras webs (Clickjacking) Header always set X-Frame-Options "SAMEORIGIN" # Evita la suplantación de tipos MIME Header always set X-Content-Type-Options "nosniff" # Controla la información de referidos Header always set Referrer-Policy "strict-origin-when-cross-origin" # Restringe el uso de hardware (cámara, micro, etc.) Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()" </IfModule>
Guarda, limpia la caché del navegador y comprueba tu web. Si algo se rompe, quita las líneas de una en una hasta encontrar la conflictiva.
- Nginx no lee
.htaccess: edita el archivo de configuración de tu dominio, normalmente en/etc/nginx/sites-available/tudominio. - Añade estas líneas dentro del bloque
server { ... }. - Guarda y recarga el servicio con
sudo systemctl reload nginx.
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always;
¿Hosting compartido sin acceso root? Busca «cabeceras personalizadas» en tu panel de control o pídeselo al soporte técnico.
Ojo con esto
Algunas reglas (sobre todo la CSP o los marcos) pueden romper un plugin o una plantilla antigua que cargue scripts externos de forma extraña. Ve probando línea a línea si algo falla.
¿Ya navegabas con las cabeceras puestas?
O acabas de descubrir que tu servidor iba a pecho descubierto. Cuéntamelo en los comentarios.
¿Prefieres no tocar código?
Si eres principiante o te da miedo romper algo, hay un plugin gratuito que deja las cabeceras listas en 5 minutos.
Menú → Plugins → CAS Free Antivirus