Seleccionar página

Las 7 cabeceras de seguridad indispensables para tu web y cómo verificar si las tienes

Categoría (s): Código y Snippets CSS | Seguridad Web | WPO y Rendimiento Web

Configurar la seguridad de una web suele dejarse en segundo plano hasta que ocurre un incidente. Sin embargo, proteger tu sitio no siempre requiere plugins pesados ni configuraciones complejas. Las cabeceras de seguridad (HTTP Security Headers) son instrucciones que tu servidor envía al navegador del usuario para activar protecciones clave contra ataques habituales.

Es algo que reporto con mucha frecuencia en auditorías de seguridad web: en la gran mayoría de los casos, están mal configuradas o ausentes. La buena noticia es que implementarlas no cuesta nada, añade una capa de protección valiosa y te tomará muy poco tiempo.

¿Qué son las cabeceras de seguridad y por qué importan?

Cuando un visitante entra a tu sitio web, el servidor responde no solo con el contenido visual (HTML, imágenes, CSS), sino también con un conjunto de datos invisibles conocidos como cabeceras HTTP.

Al incluir cabeceras de seguridad específicas, le indicas al navegador exactamente cómo debe comportarse respecto a la ejecución de scripts, la carga de marcos (iframes) y la gestión de cookies, reduciendo drásticamente la superficie de ataque frente a amenazas como XSS, Clickjacking o MIME sniffing.

Las 7 cabeceras de seguridad indispensables

1. Strict-Transport-Security (HSTS)

Esta cabecera obliga al navegador a comunicarse siempre mediante el protocolo seguro HTTPS, evitando descargas accidentales o ataques de intermediario (Man-in-the-Middle) que intenten degradar la conexión a HTTP.

Ejemplo de configuración:

HTTP

Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age=31536000: Le indica al navegador que recuerde esta regla durante 1 año (en segundos).
  • includeSubDomains: Aplica la regla a todos los subdominios de tu sitio.

2. Content-Security-Policy (CSP)

Es la cabecera más potente contra ataques de inyección de código como XSS (Cross-Site Scripting), aunque requiere paciencia para configurarse. Determina qué fuentes externas están autorizadas para cargar scripts, imágenes o estilos en tu web.

Recomendación de implementación gradual: Para evitar romper funcionalidades de tu sitio al inicio, usa primero la versión de prueba:

HTTP

Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' https://trustedscripts.example.com; report-uri /csp-violation-report-endpoint/

Esta directiva solo enviará reportes de lo que bloquearía sin interrumpir el funcionamiento de la web. Cuando verifiques que no hay avisos de falsos positivos, elimina -Report-Only para hacer activa la política.

3. X-Frame-Options

Evita que sitios de terceros carguen tu web dentro de un iframe no autorizado. Esto previene directamente el ataque de Clickjacking, en el que un atacante superpone elementos invisibles sobre tu página para engañar al usuario y hacer que haga clic en enlaces maliciosos.

Ejemplo de configuración:

HTTP

X-Frame-Options: DENY
  • DENY: Impide que cualquier sitio (incluso el tuyo) cargue la página en un iframe. Alternativamente, puedes usar SAMEORIGIN o la directiva frame-ancestors dentro de la cabecera CSP.

4. X-Content-Type-Options

Impide que los navegadores intenten «adivinar» el tipo MIME de un archivo (técnica conocida como MIME sniffing). Sin esta cabecera, un archivo malicioso subido como imagen podría ser ejecutado como un script ejecutable si el navegador determina por su contenido que es código.

Ejemplo de configuración:

HTTP

X-Content-Type-Options: nosniff

5. Referrer-Policy

Controla cuánta información sobre la dirección de origen (URL actual) se envía en la cabecera Referer cuando un usuario hace clic en un enlace que lo lleva a otro dominio. Si tus URLs internas contienen parámetros sensibles, tokens de sesión o IDs, esta cabecera impide su filtrado a sitios externos.

Ejemplo de configuración:

HTTP

Referrer-Policy: strict-origin-when-cross-origin

6. Permissions-Policy

Le permite al administrador restringir el acceso del navegador a características de hardware o APIs sensibles (como la cámara, el micrófono, la geolocalización o el giroscopio) dentro del sitio web.

Ejemplo de configuración:

HTTP

Permissions-Policy: camera=(), microphone=(), geolocation=()

(Los paréntesis vacíos indican que ninguna función tiene permiso para acceder a estos dispositivos).

7. Set-Cookie (Atributos de seguridad)

Aunque Set-Cookie es una cabecera para enviar cookies al navegador, configurarla con las banderas de seguridad adecuadas garantiza que tus cookies de sesión viajen de forma cifrada y no sean accesibles por scripts maliciosos.

Ejemplo de configuración:

HTTP

Set-Cookie: session_id=xyz123; Secure; HttpOnly; SameSite=Lax
  • Secure: La cookie solo se transmite mediante conexiones HTTPS.
  • HttpOnly: Evita que la cookie sea leída desde JavaScript (protección contra XSS).
  • SameSite=Lax: Limita el envío de la cookie desde peticiones originadas en otros sitios.

2 Cabeceras que deberías eliminar de tu servidor

Así como hay cabeceras que benefician la seguridad, hay otras que entregan información innecesaria a potenciales atacantes:

  1. Server: Revela la tecnología o versión exacta del servidor web (ej. Apache/2.4.41 o nginx/1.18.0).
  2. X-Powered-By: Indica el lenguaje o framework de desarrollo usado (ej. PHP/8.1.2 o Express).

Ojo con las cabeceras obsoletas: Si en alguna guía antigua te recomiendan implementar X-XSS-Protection, ignórala. Los navegadores modernos han dejado de darle soporte debido a que en ciertos escenarios podía introducir nuevas vulnerabilidades.

Cómo comprobar las cabeceras de tu web en menos de 1 minuto

Existen dos métodos sumamente sencillos para verificar qué cabeceras tiene activas tu sitio:

Método 1: Herramienta online gratuita

Ingresa a Security Headers, escribe el dominio de tu sitio web y presiona en evaluar. Obtendrás un informe inmediato con una calificación con letras (de A+ a F) indicando cuáles faltan por configurar.

Método 2: Desde la terminal de comandos

Abre tu consola o terminal (macOS, Linux o Windows) y ejecuta el siguiente comando:

Bash

curl -I https://tuweb.com

El parámetro -I solicitará únicamente los encabezados HTTP de la respuesta de tu servidor para examinarlos directamente en la pantalla.

Conclusión

Implementar todas estas cabeceras no te tomará más de 30 minutos (siendo la CSP la que requiere algo más de análisis). Aunque no erradican el 100% de las vulnerabilidades críticas de una aplicación, añaden una capa de protección perimetral indispensable que minimiza los vectores de ataque más comunes.

Si estás administrando un sitio web o brindando servicios de mantenimiento, auditar las cabeceras HTTP es un paso rápido que eleva de inmediato el estándar de seguridad de cualquier proyecto.

Preguntas Frecuentes (FAQ)

¿Configurar las cabeceras de seguridad puede romper mi sitio web?

Por lo general no, con excepción de Content-Security-Policy (CSP) si bloquea archivos o fuentes externas que tu web necesita para funcionar (como tipografías de Google Fonts o scripts de analítica). Por ello, se recomienda iniciar siempre con el modo Report-Only.

¿Puedo añadir estas cabeceras mediante un plugin en WordPress?

Sí, existen plugins de seguridad como HTTP Headers, Rank Math o plugins de caché y seguridad perimetral que permiten insertar cabeceras fácilmente. Sin embargo, lo más óptimo a nivel de rendimiento es configurarlas directamente en el archivo .htaccess (Apache) o en la configuración del servidor (nginx.conf).

¿Por qué la cabecera X-XSS-Protection ya no se recomienda?

Esta cabecera fue diseñada para navegadores antiguos. Los navegadores modernos han eliminado su soporte debido a que el filtro XSS integrado producía falsos positivos e incluso permitía a atacantes vulnerar sitios que de otro modo eran seguros.

¿Dónde debo colocar las directivas de cabeceras en servidores Apache?

En servidores Apache con el módulo mod_headers activo, puedes agregar las líneas correspondientes dentro del archivo .htaccess ubicado en la raíz de tu sitio web usando la directiva Header set.

Referencias:

OWASP Secure Headers Project — https://owasp.org/www-project-secure-headers/

Mozilla Developer Network (MDN): HTTP Headers — https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

Security Headers Analysis Tool — https://securityheaders.com

Compartir:

Divi WordPress Theme
Anuncio - Alojamiento para WordPress de SiteGround - Potente, pero fácil de usar. Increíble velocidad, herramientas y soporte. Haz clic para más información.
Ir al contenido