Hay distintas formas de rastrear a los usuarios cuando acceden a un sitio web en particular. Algunas de ellas son más «siniestras» que otras. La mayoría de las aplicaciones web requieren algún tipo de seguimiento de sesión para mantener el estado del usuario. Esto normalmente se realiza fácilmente utilizando cookies bien configuradas (aunque esto no entra dentro del alcance de esta entrada). Una sesión está destinada a ser efímera y no persistirá por mucho tiempo.
![](http://www.fixmypcfree.com/wp-content/uploads/2012/11/MK-BH933_WTKNOT_G_201011292042011.jpg)
Por otro lado, algunos métodos intentan realizar el seguimiento del usuario durante un largo tiempo, y, en particular, intentan hacer que sea difícil evadir el seguimiento. Esto se hace a veces para fines publicitarios, pero también se puede hacer para detener ciertos ataques como ataques de fuerza bruta o para identificar atacantes que vuelven a un sitio. En el peor de los casos, desde una perspectiva privada, el seguimiento se realiza para seguir un individuo a través de distintos sitios web.
Con los años, los navegadores y plugins han proporcionado un número de maneras de limitar este seguimiento. Estas son algunas de las técnicas más comunes de cómo se hace el seguimiento y la forma en que el usuario puede evitar (algunos):
1 – Cookies
Las cookies tienen el propósito de mantener el estado entre diferentes peticiones. Un navegador enviará una cookie con cada solicitud, una vez que se establece para un sitio en particular. Desde el punto de vista de la privacidad, la fecha de caducidad y el dominio de la cookie son los ajustes más importantes. La mayoría de los navegadores rechazan las cookies de cuentas de un sitio diferente, a menos que el usuario permita que estas cookies se establezcan. Una cookie de sesión correcta no debe usar fecha de caducidad, ya que debe expirar tan pronto como se cierra el navegador. La mayoría de navegadores permiten revisar, controlar y eliminar las cookies. En el pasado, se propuso una cabecera «Cookie2» para las cookies de sesión, pero esta cabecera se desaprobó y el navegador dejó de soportarlo.
https://www.ietf.org/rfc/rfc2965.txt
http://tools.ietf.org/html/rfc6265
2 – Las cookies de Flash (objetos compartidos locales)
Flash tiene su propio mecanismo de persistencia. Estas «flash cookies» son archivos que se pueden dejar en el cliente. Estos no se pueden establecer en nombre de otros sitios («Cross-Origin»), pero una secuencia de comandos SWF puede exponer el contenido de un LSO (Local Shared Object) a otros scripts que pueden ser utilizados para implementar el almacenamiento cross-origin. La mejor manera de evitar que las cookies flash de seguimiento es desactivar flash. La gestión de las cookies de flash es complicada y por lo general requiere plugins especiales.
https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html
3 – Dirección IP
La dirección IP es probablemente el mecanismo de seguimiento más básico de todas las comunicaciones basadas en IP, pero no siempre es fiable ya que las direcciones IP de los usuarios pueden cambiar en cualquier momento, y varios usuarios a menudo comparten la misma dirección IP.
Se puede utilizar varios productos o sistemas VPN como Tor para evitar el seguimiento de la dirección IP, pero por lo general esto tiene un impacto en el rendimiento. Algunas extensiones modernas de JavaScript (RTC en particular) se pueden utilizar para recuperar la dirección IP interna de un usuario, que puede ser utilizado para resolver ambigüedades introducidas por NAT. Pero RTC no está implementado en todos los navegadores. IPv6 puede proporcionar métodos adicionales para identificar la dirección IP de los usuarios ya que es menos probable que salgan con NAT.
4 – Agente de usuario
La cadena de agente de usuario enviada por un navegador casi nunca es única por defecto, pero a veces el spyware modifica el User-Agent para agregar valores únicos a ella. Muchos navegadores permiten ajustar el User-Agent y, más recientemente, los navegadores comienzan a reducir la información en el User-Agent o incluso hacen algo dinámico para que coincida con el contenido previsto. Los plugins anti-spyware a veces modifican el User-Agent para indicar soporte para funciones específicas.
5 – Fingerprinting del navegador
Un navegador web casi nunca es una pieza monolítica de software. En su lugar, los navegadores web interaccionan con varios plugins y extensiones que el usuario puede haber instalado. Estudios anteriores han demostrado que la combinación de versiones de plugins y opciones de configuración seleccionadas por el usuario tienden a ser increíblemente únicas y esta técnica se ha utilizado para obtener identificadores únicos. No hay mucho que se pueda hacer para evitar esto, aparte de reducir al mínimo el número de plugins que se instalan (pero que puede ser un indicador en sí mismo).
6 – Almacenamiento local
HTML 5 ofrece dos nuevas formas de almacenar datos en el cliente: almacenamiento local y almacenamiento de las sesiones. El almacenamiento local es más útil para el almacenamiento persistente en el cliente, y facilita el seguimiento de los usuarios. El acceso a almacenamiento local se limita al sitio que envió los datos. Algunos navegadores implementan características de depuración que permiten al usuario revisar los datos almacenados. El almacenamiento de sesión es limitado a una ventana particular y se quita tan pronto como se cierra la ventana.
https://html.spec.whatwg.org/multipage/webstorage.html
7 – Contenido en caché
Los navegadores cachean el contenido de la caché en base a las cabeceras de caducidad proporcionadas por el servidor. Una aplicación web puede incluir contenido único en una página y, a continuación, utilizar JavaScript para comprobar si el contenido se almacena en caché o no con el fin de identificar a un usuario. Esta técnica se puede implementar utilizando imágenes, fuentes o prácticamente cualquier contenido. Es difícil defenderse a menos que rutinariamente (por ejemplo, con el cierre del navegador) se elimine todo el contenido. Algunos navegadores permiten no almacenar en caché ningún contenido en absoluto. Pero esto puede causar problemas de rendimiento importantes. Recientemente Google ha sido visto usando fuentes tipográficas para el seguimiento de los usuarios, pero la técnica no es nueva. El caché de JavaScript se puede utilizar fácilmente para establecer los ID de rastreo único.
http://robertheaton.com/2014/01/20/cookieless-user-tracking-for-douchebags/
http://fontfeed.com/archives/google-webfonts-the-spy-inside/
8 – Fingerprinting de canvas
Esta es una técnica más reciente y, en esencia, una forma especial de fingerprinting de navegador. HTML 5 introduce un API «Canvas» que permite a JavaScript dibujar una imagen en su navegador. Además, es posible leer la imagen que se ha creado. Pues resulta que, configuraciones de fuentes y otros parámetros son lo suficientemente únicos para dar lugar a imágenes ligeramente diferentes cuando se utiliza el mismo código de JavaScript para dibujar la imagen. Estas diferencias pueden ser utilizadas para derivar en un identificador de navegador. No hay mucho que se pueda hacer para evitar que esto suceda ya que ningún un navegador permite desactivar la función de canvas.
https://securehomes.esat.kuleuven.be/~gacar/persistent/index.html
9 – Inyección de cabeceras Carrier
Verizon propuso recientemente la inyección de cabeceras específicas en las peticiones HTTP para identificar a los usuarios. Como esto se hace «al vuelo», sólo funciona para HTTP y no para HTTPS. A cada usuario se le asigna un ID específico y el ID es inyectado en todas las peticiones HTTP como cabecera X-UIDH. Verizon ofrece un servicio de pago para que un sitio web pueda utilizarlo para recuperar información demográfica sobre el usuario. Pero sólo por sí mismo, la cabecera se puede utilizar para realizar un seguimiento de usuarios, ya que permanece ligada al usuario durante un tiempo prolongado.
http://webpolicy.org/2014/10/24/how-verizons-advertising-header-works/
10 – Redirecciones
Esto es un poco una variación en el seguimiento de «contenido en caché». Si un usuario es redireccionado mediante un código «301» («Redirección permanente»), entonces el navegador recordará la redirección e irá a la página de destino de inmediato, sin visitar la página original en primer lugar. Así, por ejemplo, si se hace clic en un enlace para «isc.sans.edu», se podría redirigir a «isc.sans.edu/index.html?id=sometrackingid» y la próxima vez que vaya a «isc.sans.edu», el navegador automáticamente irá directo a la segunda URL. Esta técnica es menos fiable que otras ya que los navegadores difieren en cómo redireccionan caché.
https://www.elie.net/blog/security/tracking-users-that-block-cookies-with-a-http-redirect
11 – Recreación/Sincronización de Cookies
Algunos de los métodos anteriores tienen contramedidas bastante simples. Con el fin de hacer más difícil que los usuarios eviten el seguimiento, los sitios suelen combinar diferentes métodos y «recrean» las cookies. Esta técnica es a veces llamada «Evercookie». Si el usuario elimina, por ejemplo, la cookie HTTP, pero no el flash de la cookie, el flash de la cookie se utiliza para volver a crear la cookie HTTP en la próxima visita del usuario.