web-dev-qa-db-fra.com

Façons de créer une empreinte utilisateur unique dans PHP

Quel est le meilleur moyen de générer une "empreinte digitale" de l'unicité de l'utilisateur en PHP?

Par exemple:

  1. Je pourrais utiliser l'adresse IP d'un utilisateur Comme "empreinte digitale". Cependant, il pourrait y avoir plusieurs autres utilisateurs sur la même adresse IP.
  2. Je pourrais Utiliser l’agent utilisateur de l’utilisateur IP + comme «Empreinte digitale»; cependant, un seul utilisateur Pourrait simplement passer de safari à Firefox et être à nouveau considéré comme unique

Idéalement, les empreintes digitales désignent donc la "machine" plutôt que le navigateur ou "ip", mais je ne vois pas comment cela est réalisable.

Ouvrez-vous aux idées/suggestions sur la manière dont vous identifiez de manière unique vos utilisateurs et sur les avantages/inconvénients de votre méthode.

20
So Over It

Ce site couvre à peu près toutes les informations que vous pouvez utiliser pour distinguer les individus via un navigateur.

https://panopticlick.eff.org/

JavaScript, Java et Flash aident beaucoup.

13
JAL

manière la plus simple et la meilleure: utilisez phps session-management - chaque client se voit attribuer un identifiant, stocké dans un cookie (si activé) ou donné sous forme de variable get sur chaque lien et formulaire. (vous pouvez également créer un cookie vous-même). mais: cela ne fait que "prendre les empreintes digitales" du navigateur - si l'utilisateur change de navigateur, supprime ses cookies ou quoi que ce soit d'autre, vous ne pouvez plus l'identifier.

identifier chaque client par ip est généralement une mauvaise idée et ne fonctionnera pas. les clients qui utilisent le même routeur auront la même adresse IP - les clients connectés via un pool de serveurs proxy peuvent avoir une autre adresse IP à chaque chargement de page.

si vous avez besoin d'une solution qui ne puisse pas être manipulée facilement par le client, essayez de combiner les éléments suivants, en utilisant tous ceux pris en charge par le navigateur du client et comparez-les à chaque chargement de page:

  • Cookies HTTP "normaux" 
  • Objets partagés locaux (cookies flash) 
  • Stockage des cookies dans des valeurs RVB de fichiers PNG générés automatiquement et mis en cache de force à l'aide d'une balise HTML5 Canvas pour la lecture des pixels (cookies) 
  • Stockage des cookies et lecture de l'historique Web 
  • Stockage des cookies dans HTTP ETags 
  • 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

il y a une solution appelée evercookie qui implémente tout cela

10
oezi

Il y a autre chose à prendre en compte, l'adresse IP publique d'un utilisateur est quelque chose qui peut aussi changer à chaque chargement de page.
Il existe plusieurs organisations qui commutent les adresses IP publiques dans leurs routeurs pour équilibrer le trafic.

3
jmserra

L'obtention d'une fiabilité à 100% n'est pas garantie, mais la combinaison de certaines méthodes courantes peut vous donner des résultats significatifs.

  • Les utilisateurs ne changent généralement pas de navigateur. Une complication excessive dans votre algorithme uniquement pour atteindre une perfection technique ne vaut pas la peine.
  • Vous appartenez certainement au top 100 des sites Web si vous pouvez vous attendre à plusieurs utilisateurs de la même adresse IP. Ne le prenez pas comme une affaire personnelle, mais vous n’êtes pas si populaire que ça.

Prenez le chemin le plus simple possible qui pourrait fonctionner et ajustez-le avec le temps si cela semble nécessaire.

3
pestaa

J'ai trois ordinateurs différents, différents appareils de poche, et beaucoup d'entre eux ont différents navigateurs installés. J'utilise toutes ces choses de manière interchangeable à la maison, emmenez-les ailleurs avec moi, donc, sur diverses adresses IP. Ce que j'essaie de souligner, c'est que le fait de prendre les empreintes digitales d'un navigateur ou d'une machine ne sera jamais infaillible si votre objectif est de bloquer une personne.

Je vous recommande de prendre une approche différente. Jugez en fonction des informations non concluantes dont vous disposez qui suggèrent l'identité de votre utilisateur banni (même adresse IP ou même agent utilisateur s'il s'agit d'une méthode peu commune, ou encore de certaines méthodes de prise d'empreinte de navigateur javascript, telles que les polices disponibles, les plugins disponibles, les outils non standard (taille de la fenêtre, etc.) et exigent de ces visiteurs suspects une forme de vérification d’identité plus stricte - telle que oauth avec Facebook, Google+ ou Twitter. Ensuite, vous pouvez vérifier si ce compte de média social est authentique ou créé simplement pour le contourner. Il existe également des API de vérification téléphonique au cas où votre base d'utilisateurs ne serait pas au courant des réseaux sociaux et selon l'intérêt que les utilisateurs ne contournent pas l'interdiction.

0
Thoracius Appotite