Cifrado y comunicación segura

Encabezado HTTP (HTTP Header)

Se lee en aproximadamente 5 minutos

Qué son los encabezados HTTP

Los encabezados HTTP son metainformación intercambiada entre cliente (navegador) y servidor en la comunicación HTTP, separada del cuerpo (body). Los de solicitud van del cliente al servidor; los de respuesta, del servidor al cliente.

Se escriben en formato "nombre: valor" y transmiten todo tipo de información auxiliar: tipo de contenido, control de caché, credenciales de autenticación y políticas de seguridad. Para desarrolladores web, comprender los encabezados HTTP es esencial, especialmente los de seguridad como base de la defensa del sitio.

Encabezados de solicitud y respuesta

Encabezados de solicitud
Enviados por el cliente al servidor. User-Agent (tipo de navegador), Accept (tipos de contenido aceptados), Authorization (token de autenticación), Cookie (información de cookies almacenadas).
Encabezados de respuesta
Devueltos por el servidor al cliente. Content-Type (tipo MIME), Set-Cookie (instrucción de configurar cookie), Cache-Control (política de caché), encabezados de seguridad.

Encabezados de seguridad

Los encabezados de seguridad en las respuestas son fundamentales para la defensa del sitio web.

  • Content-Security-Policy (CSP): Controla los orígenes de recursos que la página puede cargar. Mitiga significativamente ataques XSS.
  • Strict-Transport-Security (HSTS): Fuerza al navegador a usar solo HTTPS en adelante. Previene ataques de downgrade a HTTP.
  • X-Frame-Options: Controla si la página puede ser embebida en <iframe>. Contramedida contra clickjacking. DENY o SAMEORIGIN.
  • X-Content-Type-Options: Con nosniff, desactiva el MIME sniffing del navegador, reduciendo riesgo de inyección de scripts.

Estos encabezados funcionan individualmente y en combinación construyen defensa multicapa.

Encabezados de control de caché

  • Cache-Control: El más importante para control de caché. max-age=3600 (cachear 1 hora), no-cache (verificar con servidor cada vez), no-store (no cachear nada). Páginas con autenticación deben usar no-store, private.
  • ETag: Hash que identifica una versión del recurso. El navegador envía If-None-Match en la siguiente solicitud; si no cambió, el servidor responde 304 Not Modified ahorrando ancho de banda.
  • Last-Modified: Fecha de última modificación. Similar a ETag pero con precisión de segundos. Se recomienda usar ambos.

Para assets estáticos (CSS, JS, imágenes): max-age largo con hash en el nombre de archivo. Para HTML: no-cache con ETag para eficiencia.

Encabezados de privacidad

  • Referrer-Policy: Controla el contenido del encabezado Referer en navegación. strict-origin-when-cross-origin es la configuración recomendada. Previene filtración del historial de navegación a sitios externos.
  • Permissions-Policy: Controla acceso a funciones del navegador (cámara, micrófono, geolocalización). Desactivar funciones innecesarias previene abuso por scripts maliciosos.
  • Encabezados Cross-Origin: COOP, COEP, CORP controlan compartición de recursos y referencias de ventana entre orígenes. Introducidos como contramedida a ataques Spectre.

La combinación adecuada de encabezados de seguridad y privacidad protege los datos del usuario minimizando la superficie de ataque.

Conceptos erróneos comunes

Los encabezados HTTP solo importan a administradores de servidor
Para desarrolladores frontend también son esenciales: resolver errores CORS, diseñar estrategias de caché, implementar CSP. El conocimiento de encabezados se necesita en el trabajo diario.
Configurar encabezados de seguridad elimina vulnerabilidades
Los encabezados son una capa de defensa multicapa. No sustituyen la corrección de vulnerabilidades de la aplicación (validación de entrada, fallos de autenticación). Son efectivos solo en combinación con medidas fundamentales.
Compartir

Términos relacionados

Artículos relacionados