web-dev-qa-db-fra.com

Détection d'un utilisateur anonyme "unique"

Il est impossible d'identifier un utilisateur ou une demande en tant que unique car le duper est trivial.

Cependant, il existe une poignée de méthodes qui, combinées, peuvent entraver les tentatives de triche et donner à un utilisateur un statut quasi-unique.

Je connais ce qui suit:

  1. Adresse IP - stockez l'adresse IP de chaque visiteur dans une base de données quelconque
    • Peut être truqué
    • Plusieurs ordinateurs/utilisateurs peuvent avoir la même adresse
    • Utilisateurs avec des adresses IP dynamiques (certains FAI les émettent)
  2. Suivi des cookies - stockez un cookie par visiteur. Les visiteurs qui ne l'ont pas sont considérés comme "uniques"
    • Peut être truqué
    • Les cookies peuvent être bloqués ou effacés via le navigateur

Existe-t-il d'autres moyens de suivre les visiteurs du site Web non autorisés (sans connexion, sans authentification)?

41
Omar

Il existe en fait de nombreuses façons de détecter un utilisateur "unique". Beaucoup de ces méthodes sont utilisées par nos amis du marketing. C'est encore plus facile lorsque vous avez activé des plugins tels que Java, Flash, etc.

Actuellement, ma présentation préférée du suivi basé sur les cookies est evercookie ( http://samy.pl/evercookie/ ). Il crée un cookie "permanent" via plusieurs mécanismes de stockage, l'utilisateur moyen n'est pas en mesure de vider, en particulier il utilise:

  • Cookies HTTP standard
  • Objets partagés locaux (cookies Flash)
  • Stockage isolé Silverlight
  • Stockage des cookies dans les valeurs RVB des PNG générés automatiquement et mis en cache de force à l'aide de la balise HTML5 Canvas pour lire les pixels (cookies)
  • Stockage des cookies dans l'historique Web
  • Stockage des cookies dans HTTP ETags
  • Stockage des cookies dans le cache Web
  • mise en cache de window.name
  • Stockage de données utilisateur Internet Explorer
  • Stockage de session HTML5
  • Stockage local HTML5
  • Stockage global HTML5
  • Stockage de base de données HTML5 via SQLite

Je ne me souviens pas de l'URL, mais il y a aussi un site qui vous dit comment "anonyme" vous êtes basé sur tout ce qu'il peut recueillir à partir de votre navigateur Web: quels plugins vous avez chargés, quelle version, quelle langue, taille d'écran, .. Ensuite, vous pouvez exploiter les plugins dont je parlais plus tôt (Flash, Java, ...) pour en savoir plus sur l'utilisateur. Je modifierai ce message lorsque je trouverai la page qui vous a montré "à quel point vous êtes unique" ou peut-être que quelqu'un sait "" en fait, il semble que chaque l'utilisateur est en quelque sorte unique!

- [~ # ~] modifier [~ # ~] -

J'ai trouvé la page dont je parlais: Panopticlick - "Votre navigateur est-il unique et traçable" .

Il collecte des éléments tels que l'agent utilisateur, les en-têtes HTTP_ACCEPT, les plug-ins de navigateur, le fuseau horaire, la taille et la profondeur de l'écran, les polices système (via Java?), Les cookies ...

Mon résultat: L'empreinte digitale de votre navigateur semble unique parmi les 1 221 154 testés jusqu'à présent.

59
Dennis G

Panopticlick a une méthode assez raffinée pour vérifier les utilisateurs uniques en utilisant les empreintes digitales. Outre l'adresse IP et l'agent utilisateur, il a utilisé des éléments tels que le fuseau horaire, la résolution d'écran, les polices installées sur le système et les plugins installés dans le navigateur, etc., il propose donc un ID très distinct pour chaque utilisateur sans stocker quoi que ce soit dans leurs ordinateurs . Les faux négatifs (trouver deux utilisateurs différents avec exactement la même empreinte digitale) sont très rares.

Un problème avec cette approche est qu'elle peut produire des faux positifs, c'est-à-dire qu'elle considère le même utilisateur comme un nouveau s'il a installé une nouvelle police par exemple. Si cela est correct ou non, cela dépend de votre application, je suppose.

8
Jakob

Oui, il est impossible de distinguer les visiteurs anonymes avec une certitude à 100%. Le mieux que vous puissiez faire est de rassembler les informations dont vous disposez et d'essayer de distinguer le plus de visiteurs possible.

Il existe une autre information que vous pouvez utiliser:

  1. Chaîne du navigateur
    • Ce n'est pas unique, mais en combinaison avec les autres informations, il augmente la résolution.

Si vous avez besoin de distinguer les visiteurs à 100%, vous devez les obliger à se connecter.

2
Guffa

À mon avis, il n'y a aucun moyen infaillible d'y parvenir. Parmi vos options, les cookies sont les plus susceptibles de générer un nombre raisonnablement réaliste. Les serveurs NATing et proxy peuvent masquer les adresses IP d'un grand nombre d'utilisateurs, et l'allocation dynamique d'adresses IP confondra les résultats pour beaucoup d'autres

Avez-vous envisagé d'utiliser par exemple Google Analytics ou similaire? Ils font un suivi des visiteurs unique dans le cadre de leur service, et ils ont probablement beaucoup plus d'argent à consacrer à la recherche de solutions heuristiques à ce problème que vous ou moi. Juste une pensée!

2
Paul Russell