¿Qué son los Encabezados de Seguridad?
Los encabezados de seguridad son encabezados de respuesta HTTP que instruyen a los navegadores cómo comportarse al manejar el contenido de un sitio web, mejorando la protección contra vulnerabilidades web comunes. Estos encabezados ayudan a prevenir ataques como cross-site scripting (XSS), clickjacking, inyección de contenido y ataques de degradación de protocolo. Los encabezados de seguridad configurados correctamente son esenciales para estrategias de defensa en profundidad.
Encabezados de Seguridad Esenciales
Strict-Transport-Security (HSTS)
Fuerza conexiones HTTPS:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- Previene ataques de degradación de protocolo
- Bloquea contenido mixto
- Protege contra despojo de SSL
Content-Security-Policy (CSP)
Controla la carga de recursos:
Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com; style-src 'self' 'unsafe-inline'
- Previene ataques XSS
- Controla fuentes de scripts
- Bloquea recursos no autorizados
X-Frame-Options
Previene clickjacking:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
- Bloquea el sitio de ser enmarcado
- Protege contra ataques de redirección de UI
X-Content-Type-Options
Previene detección MIME:
X-Content-Type-Options: nosniff
- Fuerza al navegador a respetar el Content-Type declarado
- Previene inyección de scripts mediante archivos mal interpretados
Encabezados de Seguridad Adicionales
| Encabezado | Propósito | Valor de Ejemplo |
|---|---|---|
| X-XSS-Protection | Filtro XSS (heredado) | 1; mode=block |
| Referrer-Policy | Controlar información de remitente | strict-origin-when-cross-origin |
| Permissions-Policy | Restricciones de características | geolocation=(), camera=() |
| Cross-Origin-Opener-Policy | Aislamiento de procesos | same-origin |
| Cross-Origin-Embedder-Policy | Aislamiento de recursos | require-corp |
Ejemplos de Implementación
Configuración Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
Configuración Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Encabezados de Seguridad y Salud del Dominio
Por Qué Importan los Encabezados
- Proteger usuarios que visitan tu dominio
- Prevenir daño a la reputación del dominio
- Cumplir requisitos de cumplimiento
- Defender contra ataques comunes
Probar Encabezados de Seguridad
Herramientas para verificar implementación:
- securityheaders.com
- Observatorio Mozilla
- SSL Labs
- Pestaña Network de Chrome DevTools
Mejores Prácticas
1. Comenzar con HSTS: Esencial para cumplimiento HTTPS
2. Implementar CSP gradualmente: Comenzar con modo de solo informe
3. Probar exhaustivamente: Los encabezados pueden romper funcionalidad
4. Usar listas de precargas: Enviar a listas de precargas del navegador
5. Monitorear violaciones: Usar puntos finales de informe de CSP
6. Auditorías regulares: Los requisitos de seguridad evolucionan
Criterios de Calificación Comunes
| Calificación | Requisitos Típicos |
|---|---|
| A+ | Todos los encabezados críticos, precargas HSTS |
| A | HSTS, CSP, X-Frame-Options, X-Content-Type |
| B | Faltan algunos encabezados |
| C/D | Encabezados de seguridad mínimos |
| F | Sin encabezados de seguridad |
Los encabezados de seguridad representan una capa crítica de seguridad de aplicaciones web, proporcionando protección ejecutada por navegador que complementa medidas de seguridad del lado del servidor.