Cabeceras HTTP para wordpress

¡Hola! Qué tal. Hoy quería hablarte de algo que a veces suena a chino técnico de película de hackers, pero que en realidad es súper importante si tienes una web en WordPress: las cabeceras HTTP.

Seguro que más de una vez has instalado algún plugin de seguridad o has pasado tu web por una de esas herramientas online que te analizan el rendimiento y la salud del sitio (como GTmetrix o Security Headers). Y seguro que te has encontrado con mensajes raros sobre «políticas de seguridad de contenido», «X-Frame-Options» o cosas por el estilo. Bueno, pues todo eso de lo que se quejan esas herramientas se soluciona, en gran medida, configurando bien las dichosas cabeceras HTTP.

Vamos a tomarnos un café virtual y a explicar esto de andar por casa, sin tecnicismos innecesarios, para que entiendas exactamente qué son, para qué sirven y cómo puedes meterles mano tú mismo de forma manual en tu WordPress.

¿Qué demonios son las cabeceras HTTP?

Para entenderlo fácil, imagina que tu navegador web (Chrome, Firefox, Safari) y el servidor donde está alojado tu WordPress (en tu hosting) son dos personas que están haciendo una mudanza.

Cuando tú escribes tudominio.com en la barra de direcciones, tu navegador le manda una cartita al servidor diciendo: «Oye, necesito la página de inicio». A eso se le llama una petición HTTP.

El servidor recibe la carta, busca los archivos de tu web y te los devuelve. Pero junto con los archivos de la página (el diseño, las fotos, los textos), el servidor mete otra carta metida en un sobre transparente pegado fuera. Esa carta son las cabeceras HTTP (HTTP Headers).

En esas cabeceras no va el contenido visible de tu web, sino información invisible pero vital sobre cómo debe comportarse el navegador al recibir los datos. Le dicen cosas como: «Oye, el archivo que te mando pesa tanto», «Oye, esto caduca en una semana, guárdalo en caché», o bien, «Oye, por seguridad, prohíbe que otros metan esta página dentro de un marco (iframe) en otra web maligna».

¿Para qué sirven exactamente?

Las cabeceras HTTP tienen dos misiones principales en la vida: la seguridad y el rendimiento.

1. Seguridad a prueba de bombas

Internet es un lugar un poco salvaje, y los hackers siempre están buscando rendijas por donde colar código malicioso (como ataques de tipo XSS o inyecciones de scripts). Las cabeceras de seguridad actúan como un guardaespaldas en la puerta de tu discoteca particular. Le dicen al navegador del usuario: «Mira, confía solo en mis scripts, no dejes que carguen cosas de fuentes extrañas, y si alguien intenta abrir mi web dentro de una trampa, bloquéalo».

2. Rendimiento y SEO

Otras cabeceras le dicen al navegador qué cosas puede guardar en su memoria temporal (caché) para que la próxima vez que el usuario entre, la web le cargue volando sin tener que pedirle todo al servidor otra vez. Y ya sabes que Google ama las webs rápidas, así que indirectamente te ayuda a posicionar mejor.

Las cabeceras HTTP más importantes que deberías conocer

No hace falta que te aprendas cincuenta cabeceras, pero hay unas poquitas que son las reinas del mambo y las que siempre te van a pedir los escáneres de seguridad:

  • X-Frame-Options: Evita que otros sitios web metan tu página dentro de un iframe. Esto es clave para prevenir ataques de clickjacking (que te engañen para hacer clic en un sitio invisible encima de tu botón real).
  • X-Content-Type-Options: Evita que el navegador intente «adivinar» el tipo de archivo que está descargando. Si dice que es una imagen, es una imagen; si dice que es un script, es un script. Así evitamos que ejecuten código colgado camuflado como un JPG inocente.
  • Referrer-Policy: Controla cuánta información sobre de qué página vienes se comparte cuando haces clic en un enlace externo.
  • Permissions-Policy: Le prohíbe a la web usar la cámara, el micrófono o la geolocalización de tu visitante a menos que tú le des permiso explícito.
  • Content-Security-Policy (CSP): Es la madre de todas las cabeceras. La más compleja, pero la más potente. Básicamente hace una lista blanca de dónde está permitido cargar imágenes, scripts, fuentes y estilos.

Cómo ponerlas y configurarlas de forma manual en WordPress

Aquí es donde muchos recurren al típico plugin milagroso que te instala trescientas líneas de código que no entiendes. Pero como a nosotros nos gusta saber qué pasa bajo el capó y tener el control absoluto de nuestros proyectos, vamos a ver cómo ponerlas a mano.

Dependiendo de dónde esté alojada tu web, el servidor suele ser Apache o Nginx. Hoy en día la gran mayoría de hostings comerciales utilizan Apache (o sistemas híbridos que leen los archivos de configuración de Apache), así que nos centraremos en el archivo rey: el archivo .htaccess.

Método 1: Editando el archivo .htaccess (Para servidores Apache)

Conéctate a tu hosting por FTP o entra al Administrador de Archivos de tu cPanel / Plesk. Vete a la carpeta raíz de tu WordPress (donde está la carpeta wp-content y el archivo wp-config.php). Busca un archivo llamado exactamente .htaccess (si no lo ves, asegúrate de marcar la opción de «mostrar archivos ocultos»).

Abre el archivo para editarlo y añade estas líneas de código (lo ideal es ponerlas arriba del todo, justo antes de las reglas de WordPress):

Apache

<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>

Ojo con esto: Guarda el archivo, vete a tu navegador, limpia la caché y comprueba tu web. ¿Por qué te aviso? Porque algunas de estas reglas (especialmente la CSP o los marcos) pueden romper algún plugin o diseño de tu plantilla si es muy antiguo o carga scripts externos de forma extraña. Si ves que algo falla en tu web, ve probando a quitar una línea a la vez para ver cuál era la conflictiva.

Método 2: Configurándolas en Nginx

Si tu servidor va con Nginx (mucho más rápido, pero no lee .htaccess), tendrás que tocar el archivo de configuración del servidor de tu dominio (suele estar en /etc/nginx/sites-available/tudominio).

Dentro del bloque server { ... }, tendrías que añadir algo así:

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;

Luego guardas y recargas el servicio de Nginx con un sudo systemctl reload nginx desde la consola de comandos de tu servidor. (Si no tienes acceso root a un servidor VPS y estás en un hosting compartido con Nginx, normalmente tu panel de control te dejará añadir cabeceras personalizadas con un par de clics o tendrás que pedírselo al soporte técnico).

Conclusión

Como ves, las cabeceras HTTP no son ningún monstruo de siete cabezas. Son simplemente pequeñas directrices de cortesía y seguridad que intercambian el servidor y el navegador para que la fiesta funcione sin sobresaltos.

Hacerlo a mano editando tus archivos de configuración te da la tranquilidad de no depender de plugins pesados que lo único que hacen es añadir carga innecesaria a tu instalación de WordPress.

¿Y tú? ¿Ya tenías estas cabeceras configuradas en tu web o acabas de descubrir que tu servidor estaba navegando a pecho descubierto? ¡Cuéntame en los comentarios!

Si prefieres no tocar código porque eres principiante o te da palo o tienes miedo de romper algo, tengo un plugin gratuito que te puede servir, en la seccion del menu plugins, podrás encontrar cas free antivirus, en 5 min ya tendrás las cabeceras listas, descargalo, subelo a tu web y activalo y listo !


Cristian. M / Informático.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *