← Volver al Blog

15 Oct, 2026

Cabeceras de seguridad HTTP: cómo activar HSTS, CSP y X-Frame-Options

Cuando un escáner te dice "Header faltante: HSTS" o "falta Content-Security-Policy", no está diciendo que te hackearon. Está diciendo que el servidor no le pide al navegador que active protecciones que ya trae incorporadas. Activarlas lleva minutos y cierra la puerta a varios ataques comunes.

Las cabeceras que importan

CabeceraQué hace
Strict-Transport-Security (HSTS)Obliga al navegador a usar siempre HTTPS con tu dominio.
Content-Security-Policy (CSP)Define desde qué dominios se pueden cargar scripts, estilos e imágenes. Es la mejor defensa contra XSS.
X-Frame-OptionsImpide que otro sitio muestre el tuyo dentro de un iframe (clickjacking).
X-Content-Type-OptionsEvita que el navegador "adivine" el tipo de un archivo.
Referrer-PolicyControla cuánta información de tu URL se envía a otros sitios.
Permissions-PolicyDesactiva APIs que no usás (cámara, micrófono, geolocalización).

Apache o hosting compartido (.htaccess)

En la mayoría de los hostings (Hostinger, cPanel) podés agregarlas en el .htaccess de la raíz:

<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-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

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 Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

WordPress

Si no tenés acceso al servidor, podés hacerlo desde el functions.php de tu tema hijo:

add_action('send_headers', function () {
    header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
    header('X-Frame-Options: SAMEORIGIN');
    header('X-Content-Type-Options: nosniff');
    header('Referrer-Policy: strict-origin-when-cross-origin');
});

CSP: empezá en modo "solo reporte"

La Content-Security-Policy es la más poderosa y la única que puede romper tu sitio si la configurás mal (por ejemplo, bloqueando Google Analytics o tu chat). Por eso conviene empezar con Content-Security-Policy-Report-Only: el navegador no bloquea nada, solo avisa en la consola qué bloquearía.

Header always set Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data: https:; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com"

Abrí tu sitio, mirá la consola del navegador (F12), agregá a la lista los dominios legítimos que aparezcan y, cuando ya no haya avisos, cambiá a Content-Security-Policy.

Antes de activar HSTS

  • Asegurate de que todo el sitio y los subdominios funcionen con HTTPS. Con includeSubDomains, un subdominio sin certificado deja de abrir.
  • Empezá con un max-age corto (por ejemplo 300) y subilo a un año cuando confirmes que todo anda.

Cómo comprobarlo

En el navegador: F12 → pestaña Red → recargá → hacé clic en el documento principal → Encabezados de respuesta. Desde la terminal: curl -I https://tusitio.com.

Si querés ver el estado de tu sitio sin instalar nada, escaneá tu web gratis con CLIC404: revisa enlaces rotos, cabeceras de seguridad y SEO básico en un mismo reporte.

¿Querés saber cómo está tu sitio ahora mismo?

Escaneá tu web gratis: enlaces rotos, cabeceras de seguridad y SEO básico en un solo reporte.

Escanear mi sitio gratis