Encontranos en redes
Configurar headers de seguridad HTTP
Content-Security-Policy, X-Frame-Options, HSTS, Referrer-Policy y configuración para Nginx y Apache.
¿Por qué importan los headers de seguridad?
Los headers HTTP de seguridad protegen a tus usuarios contra ataques como XSS, clickjacking, sniffing de contenido y más. Se configuran en el servidor web y el navegador los aplica automáticamente.
Headers esenciales
Content-Security-Policy (CSP)
Controla qué recursos puede cargar tu página:
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.ejemplo.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com;" always;Empezá con una política permisiva y ajustá según los errores en la consola del navegador.
X-Frame-Options
Previene clickjacking (tu sitio embebido en un iframe malicioso):
add_header X-Frame-Options "SAMEORIGIN" always;Opciones: DENY, SAMEORIGIN, ALLOW-FROM uri
X-Content-Type-Options
Evita que el navegador adivine el tipo MIME:
add_header X-Content-Type-Options "nosniff" always;Referrer-Policy
Controla qué información de referencia se envía:
add_header Referrer-Policy "strict-origin-when-cross-origin" always;Permissions-Policy
Controla qué APIs del navegador puede usar tu sitio:
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;Strict-Transport-Security (HSTS)
Fuerza HTTPS en todas las conexiones futuras:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;Configuración completa para Nginx
server {
listen 443 ssl http2;
server_name tudominio.com;
# Headers de seguridad
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;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';" always;
}Configuración para Apache
En .htaccess o en la configuración del virtualhost:
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"Asegurate de tener el módulo headers habilitado:
sudo a2enmod headers
sudo systemctl restart apache2Verificar headers
curl -I https://tudominio.comO usá securityheaders.com para un análisis completo con calificación.
Recomendaciones
- Empezá con headers básicos y agregá CSP gradualmente
- Usá el modo "report-only" de CSP para testear sin romper nada
- Verificá tu configuración en securityheaders.com (apuntá a A+)
- No uses
unsafe-evalen CSP a menos que sea estrictamente necesario - Activá HSTS solo después de confirmar que HTTPS funciona correctamente