Te enseño cómo añadir las cabeceras de seguridad HTTP al fichero htaccess, y securizar tu WordPress. Rápido, conciso, con ejemplos.
- Tiempo de implementación:5 min
- Nivel de dificultad: Fácil
Reglas a implementar en el htaccess
# ENCABEZADOS DE SEGURIDAD #
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
#Header always set Content-Security-Policy "default-src 'self';"
Header set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), magnetometer=(), gyroscope=(), fullscreen=(self), sync-xhr=(self)"
</IfModule>
# FIN ENCABEZADOS DE SEGURIDAD #
Nota: Asegúrate de que el módulo mod_headers
esté habilitado en tu servidor Apache. Si no tienes acceso al archivo .htaccess
, puedes implementar estas cabeceras a través de la configuración del servidor o mediante un plugin de WordPress.
Puedes verificar tus cabeceras y recibir un reporte de seguridad utilizando esta herramienta: https://securityheaders.com/
Explicación de lo que hace cada línea
1. Strict-Transport-Security «max-age=31536000; includeSubDomains»
Obliga al navegador a utilizar conexiones seguras (HTTPS) para todas las comunicaciones con tu sitio, incluso si el usuario intenta acceder mediante HTTP.
- max-age=31536000: Establece el tiempo en segundos (31,536,000 segundos equivalen a un año) durante el cual el navegador debe recordar usar solo HTTPS.
- includeSubDomains: Aplica la política HSTS a todos los subdominios.
Consecuencias:
- Seguridad: Mejora significativamente la protección contra ataques de intermediario (Man-in-the-Middle).
- Rendimiento: Elimina redirecciones innecesarias de HTTP a HTTPS, mejorando ligeramente la velocidad de carga.
- SEO: Los motores de búsqueda favorecen sitios seguros, lo que puede mejorar tu posicionamiento.
Consideraciones: Una vez habilitado, si el certificado SSL caduca o se configura incorrectamente, los usuarios no podrán acceder al sitio hasta que se resuelva el problema.
2. X-Frame-Options «SAMEORIGIN»
Evita que tu sitio sea incrustado en un marco (iframe
) de otro dominio, protegiendo contra ataques de clickjacking.
- SAMEORIGIN: Permite que tu sitio se incruste solo en páginas del mismo origen.
Consecuencias:
- Seguridad: Previene que atacantes engañen a los usuarios mediante capas invisibles sobre tu sitio.
- Funcionalidad: Si legítimamente necesitas que otros sitios incrusten tu contenido, esta directiva lo impedirá.
Consideraciones: Evalúa si tu sitio requiere ser incrustado en otros dominios antes de implementar esta directiva.
3. X-XSS-Protection «1; mode=block»
Activa el filtro de protección contra Cross-Site Scripting (XSS) en navegadores compatibles.
- 1: Habilita la protección XSS.
- mode=block: Bloquea la carga de la página si se detecta un ataque.
Consecuencias:
- Seguridad: Añade una capa adicional de defensa contra ataques XSS.
- Compatibilidad: Algunos navegadores modernos han desactivado este filtro en favor de políticas más robustas como CSP.
Consideraciones: Aunque es útil, se recomienda complementar con Content-Security-Policy para una protección más completa.
4. X-Content-Type-Options «nosniff»
Evita que los navegadores «adivinen» el tipo MIME de los archivos, obligándolos a respetar el tipo declarado, impidiendo que archivos maliciosos se ejecuten con tipos MIME incorrectos.
Consideraciones: Asegúrate de que los tipos MIME de tus recursos estén correctamente configurados, de lo contrario podrían ser malinterpretados y generar errores si aplicas esta directiva.
5. Referrer-Policy «strict-origin-when-cross-origin»
Controla la información que se envía en el encabezado Referer al navegar entre páginas.
- strict-origin-when-cross-origin: Envía el origen completo para solicitudes del mismo origen y solo el origen para solicitudes a dominios externos.
Consecuencias:
- Privacidad: Reduce la cantidad de información compartida con sitios externos.
- SEO: Evita que URLs sensibles se compartan inadvertidamente.
Consideraciones: Podría afectar el análisis del tráfico si utilizas herramientas que dependen del encabezado Referer.
6. Permissions-Policy «geolocation=(), microphone=(), camera=(), payment=(), magnetometer=(), gyroscope=(), fullscreen=(self), sync-xhr=(self)»
Controla el acceso a características y APIs del navegador.
- geolocation=(), microphone=(), camera=(), etc.: Deshabilita estas características para todos los orígenes.
- fullscreen=(self), sync-xhr=(self): Permite estas características solo en tu dominio.
Consecuencias:
- Seguridad: Limita el potencial de abuso de APIs sensibles.
- Funcionalidad: Asegura que solo tu sitio pueda usar ciertas características, evitando usos no autorizados.
Consideraciones: Si tu sitio requiere alguna de estas características, deberás ajustar la política para permitirlas.
7. Content-Security-Policy (CSP)
Aunque está comentado en el código proporcionado, es altamente recomendable implementar CSP. Dado que es un poco tricky, he preparado este artículo explicando cómo hacer una buena implementación del Content Security Policy.
Ejemplo:
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self';"
Controla los recursos que el navegador puede cargar, protegiendo contra ataques XSS, inyecciones de código y otros.
Consecuencias:
- Seguridad: Proporciona una defensa sólida contra múltiples tipos de ataques.
- Rendimiento: Puede mejorar al limitar cargas de recursos externos.
- SEO: Mejora la confianza y seguridad percibida por los usuarios y motores de búsqueda.
Consideraciones:
- Configuración detallada: Requiere un análisis cuidadoso de los recursos y scripts utilizados en tu sitio.
- Modo de prueba: Utiliza
Content-Security-Policy-Report-Only
para identificar posibles problemas sin afectar a los usuarios.
Cómo afectan al SEO las cabeceras de seguridad
La directiva Strict-Transport-Security (HSTS) es beneficiosa, ya que los motores de búsqueda prefieren sitios que utilizan HTTPS, mejorando potencialmente tu ranking. Sin embargo, debes asegurarte de que todos los recursos (imágenes, scripts, estilos) se carguen correctamente a través de HTTPS para evitar problemas de indexación o contenido mixto.
La Referrer-Policy configurada como «strict-origin-when-cross-origin» puede limitar la información de referencia que se envía a sitios externos. Esto puede afectar el seguimiento y análisis del tráfico, especialmente si utilizas herramientas de analítica o campañas de marketing que dependen del encabezado Referer. Considera ajustar esta política si necesitas compartir más información con terceros.
La Content-Security-Policy (CSP), si no se configura adecuadamente, puede bloquear recursos esenciales para tu sitio, como scripts, estilos o fuentes, lo que podría afectar la renderización de la página y la experiencia del usuario. Esto, a su vez, puede impactar negativamente en el SEO, ya que los motores de búsqueda podrían tener dificultades para rastrear e indexar tu contenido correctamente. Es vital realizar pruebas exhaustivas y ajustar la CSP para permitir todos los recursos necesarios.