Tutorial 17: Cookies
Autor: Corbalán, Leonardo C.
COOKIES
Contenido
Las cookies constituyen una herramienta muy poderosa empleada por los servidores Web para almacenar y recuperar información acerca de sus visitantes extendiendo así las capacidades de las aplicaciones cliente/servidor basadas en WEB.
Debido a la limitación del protocolo de transferencia de hipertexto (HTTP) en cuanto a la falta de capacidad para almacenar información de estado de la sesión entre peticiones sucesivas, las cookies se han convertido en la opción adecuada para conservar de manera eficiente información entre distintas peticiones del cliente. De esta manera el cliente puede gozar de una navegación más individualizada a cambio del riesgo de la pérdida de cierta intimidad.
El servidor Web, a través del uso de las cookies, puede recordar algunos datos concernientes al usuario (nombre y contraseña, preferencias de visualización, productos que más le interesan, páginas visitadas de ese sitio, artículos seleccionados, etc.) sin utilizar espacio de almacenamiento en el servidor sino en el disco rígido del propio cliente. Esta es una manera muy eficiente para el servidor de mantener información de sus clientes, ya que un sitio muy concurrido debería dedicar gran cantidad de espacio para conservar todos estos datos y el mantenimiento de esta información requeriría una sobrecarga importante. Con la utilización de las cookies, es el mismo cliente el que se encarga de mantener la información y de devolvérsela posteriormente al servidor cuando éste lo requiera.
El que escribe la cookie (archivo de texto) en nuestro disco rígido, con información de lo que hemos estado haciendo en un servidor Web, no es el servidor, sino nuestro propio navegador (cliente) a pedido del servidor.
Las cookies poseen una fecha de caducidad, que puede variar desde el tiempo que dure la sesión hasta una fecha futura especificada, a partir de la cual dejan de ser operativas.
Es posible rechazar a voluntad las cookies desde nuestro navegador o bien desde un número cada vez mayor de programas y extensiones al navegador que las bloquean.
Como mencionábamos anteriormente, las cookies evolucionaron como respuesta a una debilidad fundamental del protocolo HTTP conocida como "falta de estado" o de "conexión persistente". La manera en que HTTP 1.0 opera es la siguiente: el cliente envía una demanda (ej., pide una página), y el servidor responde a la demanda anterior (ej., envía la página pedida).
Cada petición está separada de las peticiones anteriores, y cada contestación es en respuesta a una petición en particular. No existe ninguna relación entre una petición y las peticiones anteriores. No se reconocen estados a lo largo de una conexión continuada entre dos máquinas.
El inconveniente principal de la falta de estado es que, el servidor no sabe a qué cliente está respondiendo. No sabe si ese cliente ha establecido permiso para acceder información restringida (en el contexto de una sesión protegida con contraseña), o si el cliente ha seleccionado artículos para comprar (en el contexto de una tienda en línea), o si el cliente ha especificado preferencias previamente (en el contexto de un periódico en-línea que les permite a los usuarios especificar qué tipos de artículos prefieren leer).
Como solución a este problema se desarrollaron las cookies para manejar información de estado, extendiendo así las capacidades de la Web.
El primero en introducir las cookies fue el Netscape Navigator 2.0 y actualmente son las más utilizadas. Una versión ligeramente diferente se describe en la RFC 2109. En cada caso, sin embargo, el proceso básico es el mismo.
Primero debemos remarcar que no todos los sitios Web hacen uso de este mecanismo.
La primera vez que el cliente visita un sitio que sirve cookies, el servidor le envía la cookie, junto con información que especifica para que URLs la cookie es válida. La próxima vez que el cliente visita uno de esos URLs, incluye el valor actual de la cookie en su demanda que posiblemente permita al servidor actualizar la misma junto con la contestación al cliente.
Esto es, por supuesto, una simplificación. En el caso de JavaScript, por ejemplo, toda la actividad ocurre en la máquina del cliente pero básicamente, la cookie, sigue siendo tan sólo información que permite establecer una sesión entre el cliente y el servidor.
Debemos recalcar, (porque es un aspecto muy importante sobre todo en la discusión de privacidad con relación a las cookies), que es nuestro navegador ,es decir el cliente, el que accede a nuestro disco tanto para leer como para escribir las cookies, cosa que no puede hacer el servidor de ninguna forma.
Ya que mencionamos a JavaScrip es conveniente señalar en este punto que no forman parte de este tutorial las consideraciones de seguridad en relación a JavaScript, sino que nos abocaremos sólo a las cookies, éstas pueden estar implementadas a través de distintos medios como CGI, JavaScript, ASP, etc.).
El archivo cookies.txt se lee al abrir el navegador. A partir de ese momento el uso de cookies se gestiona en memoria y al cerrar el navegador se almacenarán en el archivo aquellas cookies que no hayan caducado (las que no especifican fecha de caducidad caducan al terminar la sesión).
Las cookies constituyen una pequeña porción de información con fecha de vencimiento como aditivo opcional, que se agrega al archivo o directorio de cookies (dependiendo del navegador que estemos utilizando) con el siguiente formato:
nombre = valor; expires = fechaCaducidad;
donde "nombre" es el nombre del dato almacenado, y "valor" representa su valor. La fecha de caducidad es un parámetro opcional que indica el tiempo que se conservará la cookie. Si no se especifica el valor de "expires", la cookie caduca cuando el usuario sale de la sesión en curso con el navegador. Por consiguiente, el navegador conservará y recuperará la cookie sólo si su fecha de caducidad aún no ha expirado.
No obstante, si editamos el archivo de cookies, (podemos hacerlo con cualquier editor de texto) veremos que aparecen muchos más datos, algunos bastante crípticos. Bien, vamos a analizarlos uno por uno.
Un dominio: Se trata de un nombre de dominio parcial o completo para el cual será válida la cookie. El navegador devolverá la cookie a todo host que encaje con el nombre de dominio parcial. Por ejemplo, si se especifica un nombre de dominio de la forma ".com.ar", entonces el navegador devolverá la cookie a servidores Web alojados en cualquiera de las máquinas "www.bi.com.ar", "bidx03.bi.com.ar", "www.leg.com.ar", etc. Los nombres de dominio deben incluir al menos dos puntos para evitar intentos fraudulentos de encajar dominios de alto nivel como ".ar". Si no se especifica ningún dominio, entonces el navegador sólo devolverá la cookie a la máquina que la originó. Además, este atributo viene acompañado de un flag que indica si todas las máquinas dentro del dominio especificado pueden acceder a la variable.
Un camino: Cuando se suministra el atributo de camino para la cookie, el navegador lo contrastará con el URL del script antes de devolver la cookie. Por ejemplo, si especificas el camino "/cgi-bin", entonces la cookie será devuelta a scripts de la forma "/cgi-bin/pedido.pl", "/cgi-bin/datos.pl" y "/cgi-bin/ficha_cliente/credito.pl", pero no al script "/cgi-administrador/webmaster.pl". Por defecto, el camino se establece al camino del documento HTML o guión CGI que emitió la cookie, lo que hace que la cookie se envíe a cualquier guión en CGI o documento HTML que cuelgue de ese directorio.
Secure: Este atributo indica que la cookie sólo será transmitida a través de un canal seguro con SSL.
Es importante comprender que por diseño las cookies poseen las siguientes limitaciones:
Trescientas cookies en total en el archivo de cookies. Si llega la número 301, se borra la más antigua.
4 Kbytes por cookie, para la suma del nombre y valor de la cookie.
Veinte cookies por servidor o dominio (los hosts y dominios completamente especificados se tratan como entidades separadas y tienen una limitación de 20 cookies cada uno, no juntos).
Trataremos ahora de establecer los límites de las posibilidades que brinda el uso de las cookies tratando de clarificar qué cosas se pueden hacer, que cosas no se pueden hacer y cuáles son los riesgos reales de la utilización de las mismas. También mencionaremos ciertos aspectos de la navegación en la Web que resultan indeseables para algunas personas y que comúnmente se atribuyen a las cookies, no obstante, pueden implementarse prescindiendo de ellas.
Beneficios de la utilización de cookies.
Realmente, los beneficios de las cookies son muchos, mientras que la amenaza contra la privacidad es mínima.
A menudo diseñadores de Web acostumbran guardar en las cookies la identificación de usuarios y contraseñas eliminando la necesidad de recordarlas en las próximas visitas al sitio. Sistemas de compras en línea las utilizan para colocar varios artículos en el cesto de compra para luego abonarlos todos juntos. Las cookies pueden darnos la bienvenida al retornar a un sitio previamente visitado con un mensaje personalizado, puede mostrarnos una interface con características de visualización elegidas por nosotros e incluso pueden mejorar la rotación de anuncios publicitarios para asegurar que a un cliente no se le presente dos veces seguidas la misma publicidad. Más beneficioso aún para el cliente es que, al llevar el control de las preferencias del mismo, el sitio es capaz de mostrar los anuncios sobre cuestiones de interés para él. Las cookies también puede dar una idea mejor de cuántos usuarios individuales están visitando el sitio, con qué asiduidad y en qué momentos.
Las cookies se crearon para favorecer al usuario. Al permitir que los sitios Web "recuerden" a los visitantes, pueden ofrecerles un servicio individualizado, avisarles de novedades y liberarlos de ciertas tareas engorrosas de identificación. Sin embargo, esa capacidad de recordar constituye el instrumento del que se sirven para rastrearnos. De ahí surge la preocupación por la intimidad y el potencial para violarla de las cookies.
Riesgos en el uso de las cookies
La mayoría de la preocupación actual sobre las cookies se debe a la aparición de grupos de anunciantes que han logrado construido el perfil de actividades de los usuarios a partir de las cookies. Estos grupos realizan publicidad para diferentes compañías colocando sus anuncios en distintos servidores. Los anuncios son imágenes comunes, sólo que en lugar de residir en la máquina de quienes sirven el resto de la página, residen en una máquina de estos grupo de anunciantes.
Lo que ocurre en un sitio que obtiene sus anuncios de un servidor de terceras partes cuando nos conectamos a él es que en realidad se produce una petición de envío de cookie en la página del servidor del anunciante, no en el que nos conectamos directamente. Dado que una cookie se puede colocar en cualquier objeto, cuando el sitio al que accedemos pide el banner al sitio del anunciante, éste leerá o escribirá una cookie en nuestro disco duro.
Por lo tanto, la petición del banner nos cuela primero una cookie y luego nos envía la imagen publicitaria. En estas circunstancias, la cookie registra qué anuncios nos fueron presentados y qué banners nos resultaron de interés (registrando en cuáles hicimos clic). Si a continuación navegamos hacia otro sitio que obtiene sus anuncios del mismo servidor, cuando esa página pida el banner al servidor de terceras partes, el servidor lee priemro la misma cookie, lo que le permite mostrarnos anuncios a medida, a partir de la información almacenada en ella, de manera que no volvamos a ver los mismos anuncios que vimos en el sitio anterior. Adicionalmente, se establece otra variable en la cookie indicando que visitamos ese sitio, de modo que una vez reunida toda esta información, se podría diseñar fácilmente un perfil de usuario sobre nosotros con nuestros gustos, antipatías y lugares que visitamos, con el fin de dirigirnos publicidad cada vez más precisa y personalizada. Resulta evidente que con el paso del tiempo, estos anuncios se volverán extraordinariamente personales.
Para muchas personas, esta habilidad de rastrear a un usuario parcialmente constituye una intrusión en el privacidad. A otros, por el contrario, les parece útil que alguien pueda mostrarle sólo los anuncios de su interés, en lugar de desplegar un manojo de banners publicitarios que no le interesan. Sin embargo, debemos destacar que esto podría realizarse sin la utilización de las cookies a través de la inspección de grandes archivos de log en el lado del servidor. La diferencia radica en que las cookies simplifican la tarea resultando más rápida y fácil de llevarla a cabo.
Últimamente, los motores de búsqueda más populares están participando en la red DoubleClick (uno de estos grupos de anunciantes), de manera que también nuestras búsquedas quedan registradas. Por ejemplo, si buscamos información sobre Mozart, Vivaldi y Bach, podrían empezar a aparecernos anuncios sobre CD’s de música clásica.
Con este tipo de propaganda, no solo gana el anunciante, sino que también lo hacen los usuarios, puesto que ven solamente los mensajes adecuados a su perfil.
Las cookies no son un buen elemento de seguridad, ya que cualquiera que conozca mínimamente su funcionamiento podría acceder físicamente o tal vez a través de red local, pero no a través de Internet, a los datos guardados en las cookies dentro de un ordenador y utilizar todos los servicios a los que permiten acceder los nombres y contraseñas en ellas almacenados.
Por otro lado, sí que es cierto que lo que inicialmente se creó como un mecanismo para beneficiar al usuario ha sido pervertido para beneficiar al anunciante, que husmea nuestras idas y venidas y almacena perfiles de usuario para luego dirigirnos su propaganda personalizada. Esta posibilidad abre las puertas a especulaciones acerca de su venta a terceros o su análisis en oscuros despachos de Interior.
En cualquier caso, lo más inquietante es el uso que se le podría dar a toda esa información sobre nuestra actividad en la Red e inclinaciones personales. Cada vez que hacemos clic en un anuncio o visitamos una página, un registro podría estar actualizándose en alguna parte, anotando cuidadosamente nuestros pasos. El salto hacia la violación de la intimidad consiste simplemente en imaginar toda esta información acerca de los hábitos de navegación y consumo de un usuario centralizada en una oficina. Aunque, como se ha explicado, una cookie no puede ser usada por estas compañías de marketing personalizado para extraer nuestro nombre, teléfono o dirección de correo electrónico, sí que podrían conocerlos por otros mecanismos, combinarlo con la información que sí consiguen de nosotros sobre nuestros gustos y preferencias, y todo ello almacenarlo y procesarlo convenientemente en una gran base de datos. Ahora sí que para algunos se está violando nuestra intimidad. Si se añade el hecho de que en general todo ocurre sin conocimiento del usuario y si se sabe que estos perfiles se pueden vender a terceros, el asunto comienza a ser preocupante..
Falsos rumores sobre agujeros en la seguridad provocado por las cookies
Una creencia muy extendida entre los usuarios inexpertos es que las cookies pueden contagiar nuestra computadora con algún virus. Para ello, las cookies deberían tener código ejecutable y además deberían mandarse ejecutar. Hasta la fecha no se conoce una cookie ejecutable; ni ninguna aplicación que intente ejecutarla. Así que en vez de preocuparse por imaginarios virus transmitidos por las cookies, es mejor estar atento a los agujeros de seguridad tangibles y reales de los navegadores, a los fallos de seguridad de Java, JavaScript, ActiveX, CGI, y demás componentes de la "Familia Dinámica" de la Web.
Otro creencia muy extendida es que una cookie nos desnuda, desvelando nuestra intimidad. Una cookie de HTTP tampoco puede ser usada para extraer datos de nuestro disco duro, conseguir nuestra dirección de correo electrónico o robar información sensible acerca de nuestra persona. Para ello existen otras formas mucho más prometedoras y que ya funcionan bien sin necesidad de cookies. En definitiva, una cookie no almacena más información confidencial que la que le queramos dar al servidor que nos la envía.
La causa de este rumor quizá se deba a que el Netscape Navigator 2.0 permitió que un JavaScript guardara la dirección del e-mail de un usuario en una cookie que podría enviarse entonces a un servidor (siempre y cuando hayamos colocado nuestra dirección de e-mail en las opciones del navegador). Puesto que una dirección de e-mail no es algo que el servidor normalmente sabría, esto representó una violación de privacidad que permitió al servidor aprender algo nuevo sobre el cliente, con el potencial de agregarlo a la distribución de e-mail de una lista a la que el cliente jamás pidió pertenecer Este problema de privacidad en realidad no es de las cookies, sino que está encerrado en JavaScript y en el Navigator 2.01.
También se dice que el servidor consigue acceso a nuestro disco duro gracias a las cookies. No es exacto. No hay que perder de vista que en el caso de las cookies no es el servidor el que lee o escribe en nuestro disco duro, sino el navegador, de la misma forma que lee o escribe en nuestro cache de disco. El servidor pide al navegador que lea o escriba las cookies, pero, en ningún caso, tiene a través de ellas acceso directo a nuestro disco duro. No olvidemos que nuestro navegador ya revela alguna información sobre nosotros sin cookies (nuestra dirección IP, sistema operativo, tipo y versión de navegador). Ya mencionamos que con un truco de Java ingenioso también puede transferir nuestra dirección de e-mail si hemos entrado esta dirección en las opciones del navegador, y en esto no participan las cookies.
Las cookies no son agentes, no pueden tomar decisiones, el tipo de información que las cookies contienen es información estática. El rumor de que alguna empresa utilizaría las cookies para examinar el registro de nuestro sistema, descubriendo las aplicaciones no registradas en nuestra máquina es una fantasía (al menos no con las cookies). Una cookie sólo devuelve información al servidor que éste le entregó primero.
Es imposible para un servidor leer una cookie de otro sitio, simplemente porque el navegador no la entrega. Ninguna máquina que no encaje en el dominio de la cookie puede leerla. Es decir, la información almacenada en una cookie no puede ser leída por una máquina distinta de la que la envió.
Toda la información que guardan las cookies están disponibles o puede reconstruirse con o sin ellas, las cookies, simplemente son más conveniente que la inspección de grandes archivos de logs en los servidores. Una excepción en la que el uso de las cookies da al servidor mayor potencia es en los entornos multiusuarios donde varios usuarios distintos comparten la misma dirección IP. En este caso las cookies permiten al servidor distinguir entre varios navegadores que utilizan esa dirección, puesto que cada navegador mantiene sus propias cookies. Ésta es una situación en la que el uso de las cookies posibilita realizar algo que no puede hacerse sin ellas.
Debemos señalar que existen por lo menos otros dos métodos que ya eran usados mucho antes de que aparecieran las cookies, para mantener información de estado en una conexión HTTP:
1) transmitir datos del estado de la sesión a través de campos ocultos en los formularios CGI
2) añadir datos del estado al final de un URL.
Como ejemplo del último enfoque, considérese el siguiente URL:
/cgi-bin/tracker.exe?curso.html
donde tracker.exe es un programa que filtra todas las direcciones y almacena en un archivo el nombre y dirección IP de la máquina que solicita la página, la hora de la petición, y la página solicitada. La dirección después del interrogante es la de la página que se quiere visitar.
De esta manera y sin necesidad de cookies podemos hacer un seguimiento exhaustivo del número y la identidad de las visitas a una página.
Las cookies mejoran los métodos anteriores en términos de facilidad de uso, rendimiento, flexibilidad y seguridad.
Nota: Todas las aseveraciones con respecto a la seguridad, están basadas en información disponible a la fecha. Existe siempre la posibilidad de que un bug futuro del navegador pueda causar algunos problemas. De todos modos, en el caso de las cookies, parece difícil que se presentara algún problema importante al respecto.
Personalización de las páginas: Es frecuente que al navegar por algún sitio se nos presente la posibilidad de elegir hacerlo con frame o sin frame, con determinado color de letras o de fondo. Todas estas características quedan guardadas en una cookie, de esta manera la próxima vez que accedamos al sitio lo encontraremos con las características de visualización que nosotros elegimos.
Idioma: Para el caso en que un sitio ofrezca la posibilidad de navegarlo en distintos idiomas, las cookies ofrecen la posibilidad de que cada vez que ingresemos a ese sitio encontremos las páginas en el idioma que en alguna visita anterior hemos configurado.
Tiendas electrónicas: Los sistemas de ventas utilizan las cookies para guardar los gustos de los usuarios basándose en las páginas visitadas cuando acceden para efectuar sus pedidos. De esta manera cuando el usuario se conecta nuevamente se le puede avisar de las novedades respecto de los artículos de su preferencia.
Carritos de la compra: Permiten recordar los artículos que un cliente va adquiriendo a medida que se mueve por las páginas del catálogo, como si los estuviera cargando en un carrito de la compra virtual, de manera que no tenga que ir pagándolos uno a uno, sino pagarlos todos de una vez cuando vaya a la página de pago.
Seguimiento de las visitas a un Web: Se va creando una historia de las páginas visitadas por los usuarios dentro de un servidor para conocer cuáles son las más visitadas, cuáles no despiertan interés etc. Sin embargo, muchos piensan que se trata de una violación de la intimidad.
Carteles publicitarios: Muchas páginas muestran distintos anuncios o espacios publicitarios (banners) cada vez que nos conectamos a ellas. La forma de hacerlo es guardar en una cookie el identificador del último anuncio que nos han mostrado, de manera que cada vez que nos conectemos nos presenten uno distinto.
Marketing personalizado: Se trata de la aplicación con fines comerciales más extendida. Las cookies se pueden emplear para construir un perfil de usuario con los lugares visitados, los anuncios (banners) que se han seguido, los productos comprados, etc. Esta información es posteriormente usada para enviarle anuncios que ellos creen le pueden interesar, así como para variar los anuncios mostrados. La violación de la intimidad se acentúa si pensamos que la compañía podría vender esta información a terceros.
Almacenamiento de nombre y contraseña: Si bien es muy cómodo conectarnos a un sitio y no tener que volver a tipear nuestro nombre y contraseña, cualquier usuario que acceda a nuestra computadora podría leer la cookie que contiene estos datos. Por ello, conviene almacenarlos encriptados, y también que caduquen al poco tiempo.
Almacenamiento de información sensible: Hay sitios que utilizan las cookies para guardar nuestro número de tarjeta de crédito para que en futuras transacciones no tengamos que tipearlo de vuelta. Esto es muy riesgoso si otro usuario puede acceder físicamente a nuestra computadora.
El Netscape guarda todas las cookies en un solo archivo de texto llamado cookies.txt (en Windows) o simplemente cookies (en UNIX) que puede editarse con cualquier editor, aunque en la cabecera del archivo aparece una recomendación de no hacerlo "# This is a generated file! Do not edit.". Comúnmente se encuentra en el directorio en que se instaló el navegador.
Microsoft Internet Explorer, en cambio, almacena las cookies como archivos separados en la carpeta llamada Cookies que se encuentra dentro de la carpeta Windows (en una instalación estándar).
Debido a que las cookies se almacenan en memoria hasta que se cierre el navegador, (momento en que se escriben en el disco) no es posible ver qué cookies hemos aceptado en nuestro archivo cookies.txt hasta que salgamos del mismo.
Las cookies pueden desactivarse a través de las opciones de los navegadores. También es posible pedir a nuestro navegador que nos dé la posibilidad de aceptarlas o rechazarlas.
¿Cómo configurar los navegadores?
La opción por defecto tanto de Netscape como de Explorer es que las cookies sean aceptadas silenciosamente. En consecuencia, muchos usuarios pueden navegar durante años por Internet, albergar 300 cookies en su disco duro y ni siquiera saber que existen o qué son.
Netscape
En el menú Opciones, en "Preferencias de Red", en la pestaña de "Protocolos", podemos marcar la casilla "Mostrar una advertencia antes de aceptar una cookie". Esto en realidad no desactiva la cookie, sino que obliga al navegador a mandarnos un aviso cada vez que le envían una cookie con la opción de no aceptarla. Esto puede hacer la navegación un tanto molesta si nos conectamos a un sitio que nos mande una cookie con cada imagen.
En el Communicator, se puede seleccionar la opción de desactivar cookies.
Otra manera de protegerse si se utiliza Netscape es colocando el archivo cookies.txt (en Windows) o cookies (en Unix) con atributo de sólo lectura (previo borrado de su contenido), de esta manera el navegador no podrá actualizarlo. No hay que olvidar que a pesar de bloquear el archivo de las cookies, éstas siguen estando activas en memoria en tanto dure la sesión abierta con el navegador.
Microsoft Internet Explorer
En el menú "Ver", en "Opciones", en la pestaña "Avanzadas", podemos marcar la casilla "Avisar antes de recibir cookies", lo que puede entorpecer bastante la navegación si se nos envían muchas cookies. En el Explorer 4.0, en el mismo lugar, se puede elegir la opción de no recibir ninguna cookie.