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 #
Explicación de lo que hace cada línea
Strict-Transport-Security “max-age=31536000; includeSubDomains”:
- Nombre: HTTP Strict Transport Security (HSTS).
- Propósito: Esta directiva asegura que el navegador solo se conecte al sitio web utilizando HTTPS, incluso si el usuario intenta acceder a través de HTTP.
- Detalles:
- max-age=31536000: Especifica que la política debe ser cacheada (recordada) por el navegador durante 31,536,000 segundos, que es equivalente a un año.
- includeSubDomains: Asegura que la política se aplique también a todos los subdominios del sitio.
X-Frame-Options “SAMEORIGIN”:
- Nombre: X-Frame-Options.
- Propósito: Previene que el sitio web sea incrustado en un iframe en otros sitios, protegiendo contra ataques de clickjacking.
- Detalles:
- SAMEORIGIN: Solo permite que el sitio sea incrustado en un iframe en el mismo origen (dominio).
X-XSS-Protection “1; mode=block”:
- Nombre: X-XSS-Protection.
- Propósito: Activa la protección XSS incorporada en algunos navegadores.
- Detalles:
- 1: Activa la protección.
- mode=block: Si se detecta un ataque XSS, el navegador bloqueará la respuesta en lugar de intentar limpiar el contenido.
X-Content-Type-Options “nosniff”:
- Nombre: X-Content-Type-Options.
- Propósito: Previene ataques basados en el mime sniffing.
- Detalles:
- nosniff: Instruye al navegador que no intente adivinar (“sniff”) el tipo MIME de un recurso y que use el tipo MIME declarado en el encabezado Content-Type.
Referrer-Policy “strict-origin-when-cross-origin”:
- Nombre: Referrer-Policy.
- Propósito: Controla cuánta información se incluye en el encabezado de referente cuando se navega a otra página o se solicita un recurso.
- Detalles:
- strict-origin-when-cross-origin: Envia el origen completo cuando se realiza una solicitud en el mismo origen, pero solo el dominio (sin la ruta) cuando se realiza una solicitud a un origen diferente.
Permissions-Policy “geolocation=(), … , sync-xhr=(self)”:
- Nombre: Permissions-Policy.
- Propósito: Controla qué características y API pueden ser utilizadas en el navegador.
- Detalles:
- geolocation=(), microphone=(), etc.: Desactiva el acceso a la geolocalización, micrófono, cámara, etc. para todos los orígenes.
- speaker=(self), fullscreen=(self), sync-xhr=(self): Permite el acceso a estas características solo desde el mismo origen.
Sobre Content-Security-Policy
Falta establecer el Content-Security-Policy, que requiere un estudio detallado de las fuentes autorizadas a las que cada documento del servidor puede solicitar datos. Puedes consultar la documentación al respecto: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy
Verifica los encabezados
Esta herramienta permite verificar los encabezados online: https://securityheaders.com/