Seguridad , Tutoriales

Fortalece la Seguridad de tu Web: Solución a Vulnerabilidades CSP y HSTS

Aprende a fortalecer la seguridad de tu sitio web solucionando 4 vulnerabilidades comunes de cabeceras HTTP.

En el mundo digital, la seguridad de nuestro sitio web es una carrera constante. A menudo nos enfocamos en contraseñas robustas y actualizaciones de software, pero dejamos de lado un aspecto fundamental: las cabeceras HTTP de seguridad. Recientemente, tras un análisis de seguridad, detectamos y solucionamos varias vulnerabilidades de nivel medio y bajo que, aunque no parezcan críticas, son puertas abiertas que los atacantes pueden aprovechar.

En este artículo, te guiaremos paso a paso para que puedas solucionar cuatro de las vulnerabilidades más comunes reportadas por los escáneres de seguridad: CSP, HSTS, X-Content-Type-Options, y la filtración de información a través de X-Powered-By. ¡Y lo mejor es que puedes arreglarlas todas a la vez!

Las 4 Vulnerabilidades Comunes y por qué Debes Solucionarlas

Antes de ir a la solución, es importante entender qué estamos arreglando.

1. Content Security Policy (CSP) Header Not Set (Vulnerabilidad Media)

Imagina que tu sitio web es una casa y solo quieres que entren invitados de confianza. El CSP es como una lista de invitados para el navegador. Le dice exactamente qué scripts, estilos e imágenes tiene permitido cargar. Si un atacante intenta inyectar un script malicioso desde una fuente no autorizada, el navegador simplemente lo bloqueará. Sin esta cabecera, tu sitio es vulnerable a ataques de Cross-Site Scripting (XSS).

2. Strict-Transport-Security (HSTS) Header Not Set (Vulnerabilidad Baja)

Esta cabecera es como poner una regla de “hablar solo en secreto”. Una vez que un visitante llega a tu sitio vía HTTPS, HSTS le ordena al navegador que, durante un largo tiempo, nunca más intente conectarse a tu dominio a través de una conexión no segura (HTTP). Esto evita que los atacantes puedan interceptar la comunicación en redes públicas.

3. X-Content-Type-Options Header Missing (Vulnerabilidad Baja)

A veces, los navegadores intentan ser “demasiado listos”. Si un archivo no tiene un tipo de contenido claro, el navegador puede intentar adivinarlo. Un atacante podría subir un archivo que parece una imagen inofensiva pero que contiene código malicioso. Si el navegador “adivina” mal y lo ejecuta como un script, tienes un problema. La cabecera X-Content-Type-Options: nosniff (que significa “no adivinar”) le prohíbe al navegador tomarse esa libertad.

4. Server Leaks Information via “X-Powered-By” (Vulnerabilidad Baja)

Por defecto, muchos servidores anuncian con orgullo la tecnología que utilizan, enviando una cabecera como X-Powered-By: PHP/8.2.29. Esto es como poner una pegatina en tu coche que dice “uso este modelo de cerradura”. Le das a los ladrones información valiosa sobre qué herramientas usar. Ocultar esta información es un paso sencillo para no dar pistas innecesarias.

La Solución Unificada: Tu Código Mágico para .htaccess

Lo mejor de estas cuatro vulnerabilidades es que se pueden solucionar juntas añadiendo un pequeño bloque de código al archivo .htaccess de tu sitio web, ubicado en la carpeta raíz (normalmente public_html).

Simplemente, abre tu archivo .htaccess y añade lo siguiente al principio:

<IfModule mod_headers.c>
    # 1. Oculta la versión de PHP/servidor
    Header unset X-Powered-By

    # 2. Fuerza el uso de HTTPS con HSTS
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS

    # 3. Evita que el navegador "adivine" el tipo de contenido
    Header set X-Content-Type-Options "nosniff"

    # 4. Implementa una Política de Seguridad de Contenido (CSP) básica
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self';"
</IfModule>

¡Atención! La política CSP proporcionada es una configuración inicial excelente. Sin embargo, si usas servicios externos como Google Analytics, Google Fonts o un CDN para tus imágenes, necesitarás añadirlos a la lista. Por ejemplo, para permitir Google Analytics, the directive script-src se vería así: script-src 'self' 'unsafe-inline' https://www.google-analytics.com;.

Conclusión: Una Web Más Segura en 5 Minutos

Con un solo paso, hemos cerrado cuatro brechas de seguridad, fortaleciendo la defensa de nuestro sitio web y protegiendo a nuestros visitantes. Implementar estas cabeceras HTTP es una de las mejores prácticas de seguridad, con una excelente relación entre el esfuerzo requerido y el beneficio obtenido.

No esperes a que un escáner te lo indique. ¡Añade este código a tu .htaccess hoy mismo y lleva la seguridad de tu web al siguiente nivel!