Cabeceras de Seguridad HTTP: Guia Completa

Las cabeceras de seguridad HTTP son instrucciones que el servidor envia al navegador para controlar como se comporta la pagina. Son una capa de defensa critica contra ataques como XSS, clickjacking, inyeccion de codigo y robo de datos. A pesar de ser faciles de implementar, la mayoria de los sitios web no las configuran correctamente.

Estadisticas en tiempo real

5%

Tasa de aprobacion

230

Sitios analizados

23/100

Puntuacion media

Datos basados en escaneos reales de EscanearVulnerabilidades

Que es

Las cabeceras de seguridad HTTP son campos adicionales en la respuesta HTTP del servidor que instruyen al navegador sobre politicas de seguridad especificas. Funcionan como directivas que limitan lo que el navegador puede hacer con el contenido de la pagina. Las principales cabeceras de seguridad son: Content-Security-Policy (CSP), que controla que recursos puede cargar la pagina; Strict-Transport-Security (HSTS), que fuerza conexiones HTTPS; X-Frame-Options, que previene el clickjacking; X-Content-Type-Options, que evita el MIME-sniffing; Referrer-Policy, que controla la informacion del referrer; y Permissions-Policy, que gestiona el acceso a APIs del navegador como camara, microfono y geolocalizacion.

Por que importa

Sin cabeceras de seguridad adecuadas, tu sitio web queda expuesto a multiples vectores de ataque. Content-Security-Policy es la defensa mas efectiva contra ataques Cross-Site Scripting (XSS), que segun OWASP es la tercera vulnerabilidad web mas comun. HSTS previene ataques de downgrade donde un atacante fuerza la conexion a HTTP inseguro. X-Frame-Options impide que tu sitio sea embebido en iframes maliciosos para ataques de clickjacking. Estas cabeceras no requieren cambios en el codigo de la aplicacion y se pueden configurar a nivel de servidor web, proxy inverso o CDN, lo que las convierte en una mejora de seguridad de bajo costo y alto impacto.

Problemas comunes

  • Content-Security-Policy ausente o demasiado permisiva: usar "unsafe-inline" o "unsafe-eval" en la directiva script-src anula gran parte de la proteccion contra XSS.

  • HSTS no configurado o con max-age muy bajo: sin HSTS, la primera conexion del usuario puede ser interceptada antes de la redireccion a HTTPS.

  • X-Frame-Options ausente: permite que atacantes embeben tu sitio en un iframe para ataques de clickjacking.

  • X-Content-Type-Options ausente: permite que el navegador interprete archivos con un tipo MIME diferente al declarado, abriendo vectores de ataque.

  • Referrer-Policy no configurado: por defecto, el navegador puede enviar la URL completa como referrer, filtrando informacion sensible como tokens en URLs.

  • Permissions-Policy ausente: permite que scripts de terceros accedan a APIs sensibles del navegador como camara, microfono o geolocalizacion.

Como solucionarlo

La configuracion de cabeceras de seguridad se realiza en el servidor web. En Nginx se usan directivas add_header, en Apache se utiliza el modulo mod_headers, y en servicios como Cloudflare se pueden configurar mediante Workers o reglas de transformacion. Es recomendable empezar con una CSP en modo report-only para identificar que recursos necesita tu sitio antes de activar el bloqueo. Herramientas como securityheaders.com te permiten verificar tu configuracion.

nginx Ejemplo de configuracion
# Nginx - Agregar en el bloque server {}
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com;" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
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;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

# Apache - Agregar en .htaccess o httpd.conf
<IfModule mod_headers.c>
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Comprueba la seguridad de tu sitio web

Nuestro escaner analiza automaticamente la configuracion de cabeceras de seguridad http junto con otros 9 checks de seguridad. Recibe un informe completo con recomendaciones en minutos.

Escanea tu sitio web gratis

Guias relacionadas