Tutorial sobre Cookies. Qué son, cómo usarlas y riegos

En este artículo, te explico qué son las cookies, cómo funcionan, cuáles son sus atributos y para qué se utilizan. También hablaremos de los riesgos que pueden entrañar las cookies. Además, profundizaremos en las cookies de terceros, explicando su papel en la publicidad y el seguimiento de usuarios.
Tutorial sobre Cookies. Qué son, cómo usarlas y riegos

¿Qué son las cookies realmente?

El protocolo HTTP es lo que permitió la creación de Internet tal y como lo conocemos los desarrolladores y los usuarios, pero lo que estos últimos no saben es que HTTP es un protocolo sin estado: es decir, que cada solicitud y respuesta es independiente y no está relacionada con otras solicitudes o respuestas. Esto permite que los servidores web manejen múltiples solicitudes al mismo tiempo y mejora la eficiencia en la transferencia de datos.

Que un protocolo sea "sin estado" significa que daría igual que hicieras login en un sitio web: el servidor se olvidaría de ti tan pronto como finalice la conexión y jamás podrías ver el contenido para usuarios registrados. Tampoco podrías personalizar tu experiencia en una página, porque el servidor no sabría quién lo está pidiendo. Así que sin poder guardar información y en una época en la que tampoco existía Javascript o el localStorage, a los ingenieros se les ocurrió una solución simple y plenamente funcional para que el servidor supiera quién estaba haciendo la petición: las cookies.

¿Qué son exactamente las cookies?

Los ingenieros tuvieron que inventarse un sistema para que el servidor supiera que detrás de una petición se encontraba cierto usuario, si estaba logueado o no, etc. Y es así como nacen las cookies. Las cookies son pequeños archivos de texto que se almacenan en el navegador web del usuario cuando visita un sitio web y son devueltos al servidor cada vez que se realiza una petición. Hasta que caduquen o las borremos, esta información será enviada junto al resto de parámetros de la petición, para que el servidor nos pueda identificar.

Las cookies contienen información que permite identificarnos como usuarios, la actividad del usuario en el sitio, como la información de inicio de sesión, las preferencias del usuario y la información de seguimiento. Además, se utilizan en la web para mejorar la experiencia del usuario, ya que permiten a estos recordar las preferencias del usuario y personalizar el contenido para adaptarse a sus necesidades. Por ejemplo, un sitio web de comercio electrónico puede usar cookies para recordar los productos que ha visto un usuario y recomendar productos relacionados en su próxima visita.

En un principio, el tamaño de la cookie está limitado (dependiendo del navegador, puede variar desde 4 KB a un par de MB) y conviene que sean pequeñas por rendimiento. Dado que en una cookie se puede guardar casi cualquier tipo de información, existen cookies que contienen información específica que se utiliza para mejorar la experiencia del usuario en un sitio web (como por ejemplo una cookie puede contener información del usuario, preferencias, información de seguimiento o datos de carrito de compras en línea) o, también, cadenas aleatorias como identificadores únicos para las cookies (información de la sesión del usuario por ejemplo).

Riesgos cuando hablamos de cookies HTTP

El uso de cookies también plantea ciertos peligros y preocupaciones de seguridad y privacidad. Los sitios web pueden utilizar cookies para rastrear la actividad del usuario en línea, recopilar información personal y crear perfiles de usuario detallados. Este tipo de seguimiento de la actividad del usuario en línea puede ser empleado por empresas para dirigir anuncios específicos y personalizados, pero también puede ser utilizado por terceros malintencionados para fines ilegales, como el robo de información personal o la identidad.

Además, algunos usuarios pueden tener preocupaciones de privacidad sobre el uso de cookies en general, especialmente si no están informados sobre el tipo de información que se recopila y cómo se utiliza. Es importante que los sitios web proporcionen información clara y accesible sobre el uso de cookies, incluyendo la opción de optar por no recibir cookies o limitar su uso.

En general, los riesgos de usar cookies como sistema de persistencia de datos son:

  • Seguridad: Las cookies pueden utilizarse para fines malintencionados, como robar información de inicio de sesión o comprometer la seguridad de un sitio web. Por ejemplo, un atacante puede usar una técnica conocida como "secuestro de sesión" para tomar el control de la sesión de un usuario en un sitio web utilizando información de inicio de sesión almacenada en una cookie.

  • Privacidad: Las cookies pueden contener información personal, como direcciones de correo electrónico o preferencias de navegación. Si bien muchas empresas utilizan esta información de manera responsable, también existe la posibilidad de que se compartan con terceros sin el consentimiento del usuario.

  • Rastreo: Las cookies pueden utilizarse para rastrear la actividad del usuario en la web. Por ejemplo, los anunciantes pueden utilizar cookies para mostrar anuncios específicos basados en las búsquedas y navegación del usuario. Aunque esto puede parecer inofensivo, algunos usuarios pueden sentirse incómodos al ser rastreados en línea.

  • Vulnerabilidades en la aplicación: Las cookies también pueden exponer vulnerabilidades en la aplicación web. Por ejemplo, si una aplicación web utiliza cookies para almacenar información de autenticación, un atacante puede utilizar técnicas de inyección de cookies para modificar la información de la cookie y acceder a la cuenta del usuario.

  • Cookies de terceros: Las cookies de terceros son aquellas que son utilizadas por sitios web diferentes al que está visitando el usuario. Estas cookies pueden presentar riesgos de seguridad y privacidad, ya que el usuario puede no estar consciente de que está compartiendo información con otros sitios web.

Cabe destacar que existe un tipo de ataque bastante común llamado CSRF (Cross-Site Request Forgery), que es un tipo de ataque informático que aprovecha la confianza de un sitio web en un usuario autenticado para realizar acciones no deseadas. En un ataque CSRF, un atacante engaña al usuario para que haga clic en un enlace o visite una página web malintencionada que contiene código que ejecuta acciones en el sitio web objetivo. Estas acciones pueden incluir enviar mensajes de correo electrónico no deseados, realizar compras no autorizadas, modificar la configuración de la cuenta del usuario, entre otras.

Para prevenir ataques CSRF, se utilizan medidas de seguridad como tokens CSRF, que son códigos aleatorios que se generan en el servidor y se incluyen en cada formulario que requiere una acción. Cuando se envía el formulario, el servidor verifica que el token coincida con el esperado, lo que ayuda a prevenir que los ataques CSRF tengan éxito.

Cómo funcionan las cookies. Atributos de una cookie

Las cookies son únicamente piezas de información que se van generando según se navega por un sitio web. Básicamente, un sitio web puede generar tantas cookies como necesite. Tan solo deberá identificar cada cookie con un nombre único y asignarle un valor. Tanto el nombre como el valor pueden ser cualquier cadena de texto: uno identifica la información y el otro contiene el valor en sí.

Además, las cookies tienen atributos que controlan su comportamiento y la forma en que se almacenan y se envían los datos al servidor. Los atributos más comunes para una cookie son los siguientes:

  • Name=(string): Este es el nombre único que se le da a la cookie para identificarla en el servidor web y en el navegador del visitante. El nombre puede ser cualquier cadena de texto, pero deberá ser única.

  • Value=(string): Este es el valor que se almacena en la cookie y es la información en sí. Se utiliza para identificar y rastrear información sobre el usuario en el sitio web. El valor puede ser cualquier cadena de texto.

  • Expires=(date): Este atributo establece la fecha y hora en que la cookie caducará y se eliminará automáticamente del navegador web del usuario. Si no se especifica una fecha de caducidad, la cookie se eliminará al final de la sesión del usuario. Este mecanismo permite que, por ejemplo, el login no funcione para siempre y, si no hay actividad, el usuario tenga que volver a registrarse.

  • Max-Age=(number): Parecido al anterior, pero en vez de expresar una fecha absoluta, establece cuántos segundos estará vigente la cookie. Es decir, establece cuando caducará la cookie de forma relativa.

  • Domain=(string): Este atributo establece el dominio al que pertenece la cookie. Un sitio web solo puede acceder a las cookies que este mismo ha establecido. Si no se establece, por defecto es el dominio completo. El margen que se le da al desarrollador es si quiere que también se pueda usar en subdominios.

  • Path=(uri). Establece la ruta de la cookie. Solo será enviada si la ruta actual coincide con la establecida en la cookie.

  • Secure: Si este valor está presente, la cookie solo se enviará al servidor siempre que se use HTTPS

  • HttpOnly: Si este valor está presente, la cookie no será accesible por Javascript. Esto impide que Javascript modifique el valor de la cookie y previene de ataques de tipo XSS.

  • SameSite=(Strict|Lax|None). Establece si la cookie se enviará desde orígenes externos al propio sitio.

    • Strict significa que la cookie solo se enviará si la página actual está en el mismo dominio que la cookie.
    • Lax significa que la cookie no se enviará si se solicita el recurso de forma externa, salvo que el usuario navegue voluntariamente haciendo clic en algún enlace.
    • None significa que la cookie se enviará siempre. Sin embargo, requiere que el atributo Secure sea establecido.

Polémica sobre las cookies de terceros

Las cookies de terceros son cookies que se guardan en el navegador del visitante por un sitio web diferente al que el usuario está visitando actualmente. En otras palabras, son cookies que son configuradas por un tercero, que puede ser una empresa de publicidad, una red social, un proveedor de análisis web, entre otros. Generalmente, la mayoría se utilizan para publicidad y para análisis de visitantes.

Estas cookies de terceros pueden utilizarse para realizar un seguimiento del comportamiento del usuario en línea, para mostrar anuncios personalizados y para recopilar información sobre sus intereses y preferencias. A menudo, se utilizan para permitir que los anunciantes rastreen a los usuarios a través de múltiples sitios web y para mostrar anuncios relevantes en función de la información recopilada.

Las cookies de terceros pueden plantear problemas de privacidad y seguridad, ya que la información recopilada por estas cookies puede ser utilizada por terceros para fines que el usuario no ha autorizado o para fines malintencionados. Para proteger su privacidad, los usuarios podrían desactivar las cookies de terceros en su navegador o utilizar herramientas de privacidad en línea para limitar su seguimiento en línea.

Existe mucha controversia por las cookies de terceros, sobre todo desde que Google ha anunciado que dejará de admitir las cookies de terceros en su navegador Chrome. En principio, la medida sería aplicada en 2022 pero ha sido pospuesto muchas veces. Sin embargo, es importante tener en cuenta que esto no significa que las cookies de terceros desaparecerán por completo en la web. Otros navegadores aún pueden admitir estas cookies y, aunque Google es el líder en el mercado de navegadores, otras empresas pueden seguir utilizando cookies de terceros para rastrear y mostrar anuncios personalizados.

La mayoría de publicistas y empresas de publicidad están explorando nuevas soluciones de privacidad y publicidad basadas en tecnologías como el aprendizaje automático y el procesamiento de datos en el dispositivo del usuario, en lugar de enviarlos a través de la web.

Alternativas al uso de cookies

Las cookies datan del año 1994 y fueron inventadas (al menos en idea) para Netscape Communications para que los usuarios de comercio electrónico pudieran tener una cesta de la compra. Sin embargo, el mundo y la tecnología ha cambiado mucho. Existen alternativas al uso de cookies para personalizar la experiencia del usuario y guardar información entre peticiones HTTP. Las alternativas más usadas son:

  • Identificadores de dispositivo: los identificadores de dispositivo son códigos únicos que se asignan a cada dispositivo, como teléfonos móviles y tabletas. Estos identificadores se pueden utilizar para realizar un seguimiento de las interacciones de los usuarios con un sitio web o un servidor de aplicaciones.

  • Almacenamiento local: los navegadores modernos admiten un almacenamiento local que permite a los sitios web almacenar datos en el dispositivo del usuario, sin necesidad de utilizar cookies. Los sitios web pueden almacenar información en el almacenamiento local del navegador usando tecnologías como Web Storage o IndexedDB.

  • Huellas digitales: las huellas digitales (traducido del inglés finger print) son una técnica que se utiliza para recopilar información sobre un dispositivo y su entorno, como el sistema operativo, el navegador, la resolución de pantalla y los complementos instalados. Esta información se utiliza para crear una huella digital única que se puede utilizar para identificar a un usuario. Sin embargo, es un método poco fiable, por lo que solo se suele usar para estadística y nunca para datos sensibles.

Es importante tener en cuenta que algunas de estas alternativas pueden plantear problemas de privacidad y seguridad. Por ejemplo, las huellas digitales pueden ser utilizadas por los anunciantes para rastrear a los usuarios sin su conocimiento o consentimiento. Por lo tanto, es importante que los sitios web sean transparentes acerca de las técnicas que emplean para recopilar y almacenar información de los usuarios y que proporcionen opciones claras para que los usuarios puedan controlar su privacidad.

Conclusiones

Las cookies son ficheros de texto que contienen información, así que por sí mismas, no son buenas ni malas: todo depende del funcionamiento para el que se utilicen. Por un lado, aportan funcionalidad beneficiosa para el visitante, porque permite personalizar su experiencia a través de nuestro sitio o aplicación web. De esta forma, el usuario puede customizar los módulos, la vista, el aspecto o la información que consume.

Sin embargo, también aporta riesgos para la seguridad o privacidad del usuario, ya no tanto por el controvertido asunto de la publicidad, sino por los riesgos que entraña: robo de credenciales o acciones ilegítimas. En cualquier caso, los desarrolladores de la aplicación deberán tenerlo en cuenta a la hora de diseñar las medidas de seguridad.

¿Y tú, qué opinión tienes sobre las cookies? ¿Las prefieres sobre otros mecanismos como localStorage?

¡Qué tengas un feliz coding!