La explicación sobre las Cookies que nunca dan los libros de programación

Todos conocemos que son las cookies, pequeños segmentos de datos que se van acumulando en nuestras computadoras, fundamentalmente a través de nuestros navegadores web y que pueden servir para mantener los token de autenticación y autorización, utilizarse como almacén temporal de diferentes datos en lado del cliente (ej. Una carrito de compras), mantener el estado a través de diversas peticiones en la aplicación web(carencia que tiene el protocolo HTTP), entre otros usos.
Sin embargo, lo que nunca se habla en los libros de programación estándares(si estoy equivocado me rectifican) es sobre los atributos que se le pueden establecer a las cookies para fortalecer sus indicadores de seguridad, estos son:

  • secure: Le especifica al navegador que solamente puede enviar la cookie sobre un canal encriptado como HTTPS, sin embargo, el atributo no es respetado si la aplicación soporta indistintamente peticiones HTTP y HTTPS.
  • HttpOnly: Indica que la cookie solo puede ser accedida a través de una petición HTTP y no por un script del lado del cliente como JavaScript. Esto permite evitar ataques XSS, no obstante, hay que destacar que no todos los navegadores respetan este atributo.
  • domain: Establece el dominio desde el cual puede ser accedida la cookie, por ejemplo, si el dominio de la aplicación web es app.mydomain.com, la cookie solo podrá ser accedida desde ese dominio y los restantes subdominios que puedan existir como fotos.app.mydomain.com o incluso ciberdelincuente.app.mydomain.com, sin embargo, la cookie no podrá ser accedida desde otherApp.mydomain.com. Si queremos disminuir esta restricción se deberá establecer un dominio superior como mydomain.com.  Por supuesto, si en alguno de los subdominios hay un servidor comprometido, este pudiera servir para recolectar cookies para una posterior inferencia de los métodos de encriptación. Si no específica el dominio, las políticas de cookies infiere que es igual al dominio que la creó.
  • path: A modo de complemento de domain, puede establecerse el camino desde el cual puede ser llamada la cookie, sin embargo, al igual que domain, mientras más específico pueda ser el valor, más seguridad aporta. Si domain y path son especificados, la cookie solo se podrá acceder si los campos del encabezado HTTP de la petición contiene estos valores.
  • expires: Define el tiempo durante el cual la cookie es válida, si no se especifica se establece que solo es válida durante la sesión en la que fue creada. Esta es, según mi experiencia, el único atributo que se trata en los libros de programación web, este atributo está relacionado con Max-Age (Lo ideal es usar uno solo), pero puede profundizarse sobre este último en los enlaces que se brindan al final del post.

Es importante reiterar que solo la configuración sistémica de estos atributos puede fortalecer los indicadores de seguridad, ningún atributo por si solo puede lograr esto. La prueba de seguridad Testing for Cookies attributes (OTG-SESS-002) de la OTG está dirigida a comprobar que los atributos antes descritos estén debidamente configurados. A continuación, les dejo algunos enlaces de interés:

Espero que te haya gustado el post y dejame saber tu opinión en los comentarios.

Anuncios

4 comentarios en “La explicación sobre las Cookies que nunca dan los libros de programación

  1. Pingback: Testing for Cookies attributes (OTG-SESS-002) | Behique Digital

  2. Pingback: Apuntes sobre el Referer spoofing, el Referer spam y otros problemas de seguridad relacionados | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s