¿Qué son las cabeceras de seguridad y cómo nos ayudan a incrementar la seguridad de nuestra web?

By albert
19 Mar 2019

Como bien sabemos, la ciberseguridad 100% no la podemos lograr, pero lo que sí podemos hacer es añadir todas las capas de seguridad posibles para reducir el riesgo. Hoy en día aprender a gestionar los riesgos y reducirlos es fundamental. Es por eso que en esta entrada queremos hablaros sobre las cabeceras de seguridad y cómo pueden ayudarnos a mejorar la seguridad de un sitio web.

¿Qué son las cabeceras de seguridad?

Cuando accedemos a un sitio web, el servidor contesta, además de con el contenido de la web, con una serie de cabeceras que son interpretadas por el navegador. Estas cabeceras son utilizadas por el servidor y por el navegador para el envío de información.
cabeceras-de-seguridad

Ejemplo de cabeceras enviadas por el sitio web accounts.google.com

A continuación, vamos a ver alguna de ellas para así entender que protección aportan a los visitantes de la web.

HTTP Strict Transport Security

Esta cabecera es utilizada para evitar que la web sea cargada en HTTP. El servidor indica al navegador que nuestra web solo se debe cargar en HTTPS y el navegador bloqueará futuros accesos si se intenta acceder al dominio mediante HTTP.
Un ejemplo de esta cabecera es:
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
En esta el servidor indica que durante los próximos 31536000 segundos (1 año) la web y sus subdominios se deberán cargar siempre mediante HTTPS

X-Frame-Options

Con X-Frame-Options evitamos que nuestra web sea cargada como un iframe en otra web. Esto nos ayuda a protegernos frente a ataques de tipo Clickjacking.
Estos son los tres posibles ejemplos de uso:
X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/
En el primero se indica que la web no puede ser cargada nunca como iframe, en el segundo que solo podrá ser cargada en el mismo dominio y por último en el tercero se indica que solo podrá ser cargada como iframe en el dominio example.com.

X-XSS-Protection

X-XSS-Protection nos ayuda en la defensa frente a ataques de tipo Cross-Site Scripting (XSS). Con esta le decimos al navegador como actuar si durante la carga de la web se detecta un ataque de tipo XSS reflejado.
Tenemos las siguientes opciones de configuración:
X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report= (Solo Chromium)
Con la primera le indicamos al navegador que si se detecta un ataque no realice ningún tipo de acción y cargue la web, con la segunda indicamos al navegador que sanee el código antes de ofrecerlo, la tercera evitará que la página cargue y por último con la cuarta saneará el código y enviará un reporte a la URI indicada.

X-Content-Type-Options

Para evitar ataques basados en la confusión del tipo de MIME podemos utilizar la cabecera X-Content-Type-Options. Si el navegador recibe esta cabecera no intentará interpretar el tipo de MIME en ningún caso y utilizará el indicado en el Content-Type.
La cabecera solo puede configurarse de la siguiente manera:
X-Content-Type-Options: nosniff

Content-Security-Policy

Esta cabecera sirve para indicar al navegador qué contenidos dinámicos de terceros se permiten cargar. Esto ayuda en la protección frente a ataques de tipo Cross-Site Scripting. Esta cabecera tiene diversas directivas y políticas a aplicar. Para una correcta configuración se debe analizar de forma minuciosa el funcionamiento de nuestra web y los contenidos cargados desde terceros. En el siguiente enlace encontramos información muy útil sobre el uso de esta cabecera: https://content-security-policy.com/
La cabecera tiene la siguiente sintaxis:
Content-Security-Policy: <policy-directive>; <policy-directive>

Referrer Policy

Esta cabecera nos permite controlar que información se envía en la cabecera Referer cuál es utilizada por el navegador para indicarle al servidor desde que enlace se ha llegado a la página. Esta información, que en la mayoría de los casos puede parecer inocente, puede ser utilizada para analíticas, rastreo o incluso robo de información.
La cabecera Referrer Policy tiene la siguiente sintaxis:
Referrer-Policy: <directiva>
En el siguiente enlace se pueden encontrar todas las posibles directivas y ejemplos de uso: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy

Public Key Pinning Extension for HTTP (HPKP)

HPKP es una cabecera la cuál dice al navegador que asocie una clave pública específica a un sitio web con el objetivo de reducir el resigo de ataques de hombre en el medio (MITM) con certificados falsificados.
HPKP utiliza la técnica de Trust on First Use (TOFU). Es decir, la primera vez que un servidor web le dice a un cliente a través de una cabecera HTTP qué claves públicas le pertenecen, el cliente almacena esta información durante un período de tiempo determinado. Cuando el cliente vuelve a visitar el servidor, espera que al menos un certificado de la cadena de certificados contenga una clave pública cuya huella ya se conoce a través de HPKP.
Implementar HPKP de forma segura requerirá de una madurez operativa y organizativa debido al riesgo de que los hosts dejen de estar disponibles al establecer un conjunto de hashes de claves públicas que se vuelvan inválidos.
Un ejemplo de uso sería el siguiente:
Public-Key-Pins: pin-sha256=»d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=»; pin-sha256=»E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=»; report-uri=»http://example.com/pkp-report»; max-age=10000;
Donde pin-sha256 será la huella de la infraestructura simple de clave pública (SPKI) codificada en base64, report-uri la URL a la cual se enviarán reportes en caso de acceso fallido y max-age será el tiempo en segundos que el navegador guardará la información relativa a la clave pública.

Conclusión

Como podemos observar existen diferentes cabeceras de seguridad y cada una de ellas nos ayuda a reducir una serie de riesgos. De todos modos, tenemos que tener claro que estas cabeceras son solo una capa de seguridad extra y que en ningún caso sirven como protección si tenemos código vulnerable, sistemas sin actualizar o cualquier otra vulnerabilidad que pueda afectar la confidencialidad, integridad o disponibilidad de nuestra web. Por todo ello A2SECURE les puede ayudar a realizar análisis y formaciones de seguridad para reducir el riesgo de que vuestra web sea comprometida.
____
Autor: Adan Álvarez

Los comentarios están cerrados.