J'ai besoin de trouver un moyen d'identifier de manière unique chaque ordinateur qui visite le site Web que je crée. Quelqu'un a-t-il des conseils sur la façon d'y parvenir?
Parce que je veux que la solution fonctionne sur toutes les machines et tous les navigateurs (dans des limites raisonnables), j'essaie de créer une solution en utilisant javascript.
Les cookies ne feront pas l'affaire.
J'ai besoin de la capacité de créer fondamentalement un GUID qui est unique à un ordinateur et reproductible, en supposant qu'aucune modification matérielle ne soit survenue sur l'ordinateur. Les directions auxquelles je pense sont d'obtenir le MAC de la carte réseau et d'autres informations de cette nature qui identifieront la machine visitant le site Web.
javascript
cookies
browser
qui est invalide
la source
la source
Réponses:
Ces personnes ont développé une méthode d'empreinte digitale pour reconnaître un utilisateur avec un haut niveau de précision:
https://panopticlick.eff.org/static/browser-uniqueness.pdf
la source
introduction
Je ne sais pas s'il existe ou s'il y aura un moyen d'identifier de manière unique les machines en utilisant uniquement un navigateur. Les principales raisons sont:
Même s'il existe des moyens de suivre un ordinateur sans utiliser de cookies, il y aura toujours un moyen de le contourner et un logiciel qui le fera automatiquement. Si vous avez vraiment besoin de suivre quelque chose basé sur un ordinateur, vous devrez écrire une application native (Apple Store / Android Store / Windows Program / etc.).
Je ne serai peut-être pas en mesure de vous donner une réponse à la question que vous avez posée, mais je peux vous montrer comment mettre en œuvre le suivi de session. Avec le suivi de session, vous essayez de suivre la session de navigation au lieu de l'ordinateur visitant votre site. En suivant la session, votre schéma de base de données ressemblera à ceci:
Avantages du suivi basé sur la session:
username
/password
/email
.sessionID
.Inconvénients du suivi basé sur la session:
la mise en oeuvre
Il existe de nombreuses façons de l'implémenter. Je ne pense pas pouvoir les couvrir tous, je vais simplement énumérer mes préférés, ce qui en ferait une réponse avisée . Gardez cela à l'esprit.
Basiques
Je vais suivre la session en utilisant ce que l'on appelle un cookie permanent. Il s'agit de données qui se recréeront automatiquement même si l'utilisateur supprime ses cookies ou met à jour son navigateur. Il ne survivra cependant pas à la suppression de ses cookies et de son cache de navigation par l'utilisateur.
Pour mettre en œuvre cela, j'utiliserai le mécanisme de mise en cache des navigateurs ( RFC ), l'API WebStorage ( MDN ) et les cookies de navigateur ( RFC , Google Analytics ).
Légal
Afin d'utiliser les identifiants de suivi, vous devez les ajouter à la fois à votre politique de confidentialité et à vos conditions d'utilisation, de préférence sous le sous-titre Suivi . Nous utiliserons les touches suivantes à la fois sur
document.cookie
etwindow.localStorage
:Assurez-vous d'inclure des liens vers votre politique de confidentialité et vos conditions d'utilisation sur toutes les pages qui utilisent le suivi.
Où stocker mes données de session?
Vous pouvez stocker vos données de session dans la base de données de votre site Web ou sur l'ordinateur des utilisateurs. Étant donné que je travaille normalement sur des sites plus petits (plus de 10 000 connexions continues) qui utilisent des applications tierces (Google Analytics / Clicky / etc.), il est préférable pour moi de stocker des données sur l'ordinateur des clients. Cela présente les avantages suivants:
et inconvénients:
UUIDS
Browser|BrowserVersion|OS|OSVersion|Processor|MozzilaMajorVersion|GeckoMajorVersion
getISP(requestIP)|getHTTPSClientKey()
FingerPrint.get()
BrowserID|ComputerID|randombytes(256)
__utma
cookie.getCookie(__utma).uniqueid
Mécanisme
L'autre jour, je regardais l'émission de wendy williams avec ma petite amie et j'ai été complètement horrifié lorsque l'animatrice a conseillé à ses téléspectateurs de supprimer l'historique de leur navigateur au moins une fois par mois. La suppression de l'historique du navigateur a normalement les effets suivants:
window.localStorage
(aww man).La plupart des navigateurs modernes rendent cette option facilement disponible, mais ne craignez pas vos amis. Car il y a une solution. Le navigateur dispose d'un mécanisme de mise en cache pour stocker des scripts / images et d'autres choses. Habituellement, même si nous supprimons notre historique, ce cache de navigateur reste toujours. Tout ce dont nous avons besoin, c'est d'un moyen de stocker nos données ici. Il existe 2 méthodes pour ce faire. Le mieux est d'utiliser une image SVG et de stocker nos données dans ses balises. De cette façon, les données peuvent toujours être extraites même si JavaScript est désactivé à l'aide de Flash. Cependant, comme c'est un peu compliqué, je vais démontrer l'autre approche qui utilise JSONP ( Wikipedia )
example.com/assets/js/tracking.js (en fait tracking.php)
Maintenant, nous pouvons obtenir notre clé de session à tout moment:
window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""
Comment puis-je faire en sorte que tracking.js reste dans le navigateur?
Nous pouvons y parvenir en utilisant les en - têtes HTTP Cache-Control , Last-Modified et ETag . Nous pouvons utiliser
SessionID
comme valeur pour l'en-tête etag:Last-Modified
l'en-tête indique au navigateur que ce fichier n'est pratiquement jamais modifié.Cache-Control
dit aux mandataires et aux passerelles de ne pas mettre en cache le document mais au navigateur de le mettre en cache pendant 1 an.La prochaine fois que le navigateur demandera le document, il enverra des en
If-Modified-Since
-If-None-Match
têtes. Nous pouvons les utiliser pour renvoyer une304 Not Modified
réponse.example.com/assets/js/tracking.php
Désormais, chaque fois que le navigateur demande,
tracking.js
notre serveur répondra avec un304 Not Modified
résultat et forcera l'exécution de la copie locale detracking.js
.Je ne comprends toujours pas. Explique le moi
Supposons que l'utilisateur efface son historique de navigation et actualise la page. La seule chose qui reste sur l'ordinateur des utilisateurs est une copie du
tracking.js
cache du navigateur. Lorsque le navigateur le demande,tracking.js
il reçoit une304 Not Modified
réponse qui l'amène à exécuter la 1ère version detracking.js
celui - ci reçue.tracking.js
exécute et restaure leSessionID
qui a été supprimé.Validation
Supposons que Haxor X vole les cookies de nos clients alors qu'ils sont encore connectés. Comment les protégeons-nous? Cryptographie et empreinte digitale du navigateur à la rescousse. Rappelez-vous que notre définition originale
SessionID
était:Nous pouvons changer cela en:
Où
hk = sign(Timestamp|BrowserID|ComputerID, serverKey)
.Nous pouvons maintenant valider notre en
SessionID
utilisant l'algorithme suivant:Maintenant, pour que l'attaque de Haxor fonctionne, ils doivent:
ComputerID
. Cela signifie qu'ils doivent avoir le même fournisseur de FAI que la victime (Tricky). Cela donnera à notre victime la possibilité d'intenter une action en justice dans son propre pays. Haxor doit également obtenir la clé de session HTTPS de la victime (Hard).BrowserID
. N'importe qui peut usurper la chaîne User-Agent (ennuyeux).SessionID
(très difficile). Les attaques de volume ne fonctionneront pas car nous utilisons un horodatage pour générer une clé de cryptage / signature, donc fondamentalement, c'est comme générer une nouvelle clé pour chaque session. En plus de cela, nous chiffrons des octets aléatoires, donc une simple attaque par dictionnaire est également hors de question.Nous pouvons améliorer la validation en transférant
GoogleID
etFingerprintID
(via ajax ou des champs cachés) et en les comparant à ceux-ci.la source
storageFacade.setItem
et storageFacade.getItem. And it tries to use localStorage, but fallsback to your technique when disabled. ..Perhaps the way it works is via a single file for "diffs" i.e. each time you call
setItem. And then a
manifest` de tous les diffs créés pendant la session qui sont automatiquement créés de temps en temps.Il n'est pas possible d'identifier les ordinateurs accédant à un site Web sans la coopération de leurs propriétaires. S'ils vous le permettent, cependant, vous pouvez stocker un cookie pour identifier la machine lorsqu'elle visite à nouveau votre site. La clé est que le visiteur a le contrôle; ils peuvent supprimer le cookie et apparaître en tant que nouveau visiteur à tout moment.
la source
Une possibilité consiste à utiliser des cookies flash :
Vous devrez créer une petite animation flash (cachée) pour les lire et les écrire.
Quel que soit l'itinéraire que vous choisissez, assurez-vous que vos utilisateurs choisissent d'être suivis, sinon vous envahissez leur vie privée et devenez l'un des méchants.
la source
Adobe announced that Flash Player 10.3 enables Mozilla Firefox 4 and "future releases of Apple Safari and Google Chrome" to delete local shared objects,[11] so since version 4, Firefox treats LSOs the same way as HTTP cookies - deletion rules that previously applied only to HTTP cookies now also apply to LSOs.
Vous pouvez essayer de définir un identifiant unique dans un evercookie (cela fonctionnera sur plusieurs navigateurs, consultez leur FAQ): http://samy.pl/evercookie/
Il existe également une société appelée ThreatMetrix qui est utilisée par de nombreuses grandes entreprises pour résoudre ce problème: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ Ils sont assez chers et certains leurs autres produits ne sont pas très bons, mais leur identifiant d'appareil fonctionne bien.
Enfin, il y a cette implémentation open source jquery de l'idée panopticlick: https://github.com/carlo/jquery-browser-fingerprint Cela semble assez à moitié cuit en ce moment mais pourrait être développé.
J'espère que ça aide!
la source
Click to rediscover cookies
et voir soit null ou non défini. Donc ça ne marche pas pour moiIl existe une méthode populaire appelée empreinte digitale sur toile, décrite dans cet article scientifique: Le Web n'oublie jamais: mécanismes de suivi persistants dans la nature . Une fois que vous commencez à le chercher, vous serez surpris de la fréquence à laquelle il est utilisé. La méthode crée une empreinte digitale unique, cohérente pour chaque combinaison navigateur / matériel.
L'article passe également en revue d'autres méthodes de suivi persistantes, comme les cookies evercookies, la réapparition des cookies http et Flash et la synchronisation des cookies.
Plus d'informations sur l'empreinte digitale sur toile ici:
la source
Il n'y a qu'une petite quantité d'informations que vous pouvez obtenir via une connexion HTTP.
IP - Mais comme d'autres l'ont dit, ce n'est pas réglé pour beaucoup, sinon la plupart des utilisateurs d'Internet en raison des politiques d'allocation dynamique de leur FAI.
Useragent String - Presque tous les navigateurs envoient quel type de navigateur ils sont à chaque demande. Cependant, cela peut être défini par l'utilisateur dans de nombreux navigateurs aujourd'hui.
Collection de champs de demande - Il y a d'autres champs envoyés avec chaque demande, tels que les encodages pris en charge, etc. Ceux-ci, s'ils sont utilisés dans l'agrégat, peuvent aider à identifier la machine d'un utilisateur, mais encore une fois, ils dépendent du navigateur et peuvent être modifiés.
Cookies - La création d'un cookie est une autre façon d'identifier une machine, ou plus spécifiquement un navigateur sur une machine, mais comme d'autres l'ont dit, ceux-ci peuvent être supprimés ou désactivés par les utilisateurs, et ne sont applicables que sur un navigateur, pas un machine.
Donc, la bonne réponse est que vous ne pouvez pas réaliser ce que vous vivriez uniquement via les protocoles HTTP sur IP. Cependant, en utilisant une combinaison de cookies, ainsi que d'IP et des champs de la requête HTTP, vous avez de bonnes chances de deviner, en quelque sorte, de quelle machine il s'agit. Les utilisateurs ont tendance à n'utiliser qu'un seul navigateur, et souvent à partir d'une seule machine, donc cela peut être assez fiable, mais cela variera en fonction du public ... les techniciens sont plus susceptibles de jouer avec ce genre de choses et d'utiliser plus de machines / navigateurs. De plus, cela pourrait même être associé à une tentative de géolocalisation de l'adresse IP et d'utiliser également ces données. Mais dans tous les cas, il n'y a pas de solution qui sera correcte tout le temps.
la source
Il y a des failles dans les approches avec et sans cookies. Mais si vous pouvez pardonner les lacunes de l'approche des cookies, voici une idée.
Si vous utilisez déjà Google Analytics sur votre site, vous n'avez pas besoin d'écrire de code pour suivre vous-même les utilisateurs uniques. Google Analytics le fait pour vous via la
__utma
valeur du cookie, comme décrit dans la documentation de Google . Et en réutilisant cette valeur, vous ne créez pas de charge utile de cookies supplémentaire, ce qui présente des avantages en termes d'efficacité avec les demandes de page.Et vous pouvez écrire du code assez facilement pour accéder à cette valeur, ou utiliser la
getUniqueId()
fonction de ce script .la source
getUniqueId()
différents navigateurs sur la même machine?Comme pour les solutions précédentes, les cookies sont une bonne méthode, sachez cependant qu'ils identifient les navigateurs . Si je visitais un site Web dans Firefox, puis dans Internet Explorer, les cookies seraient stockés séparément pour les deux tentatives. Certains utilisateurs désactivent également les cookies (mais plus de personnes désactivent JavaScript).
Une autre méthode à considérer serait l'identification de l'adresse IP et du nom d'hôte (sachez que ceux-ci peuvent varier pour les utilisateurs IP commutés / non statiques, AOL utilise également des adresses IP générales). Cependant, comme cela n'identifie que les réseaux, cela peut ne pas fonctionner aussi bien que les cookies.
la source
Outre les suggestions d'utilisation des cookies, le seul ensemble complet d'attributs d'identification disponibles à interroger est contenu dans l'en-tête de la requête HTTP. Il est donc possible d'en utiliser un sous-ensemble pour créer un pseudo-identifiant unique pour un agent utilisateur (c'est-à-dire un navigateur). En outre, la plupart de ces informations sont peut-être déjà enregistrées dans le soi-disant "journal d'accès" de votre logiciel de serveur Web par défaut et, si ce n'est pas le cas, peuvent être facilement configurées pour le faire. Ensuite, un utilitaire pourrait être développé qui scanne simplement le contenu de ce journal, créant des empreintes digitalesde chaque demande comprenant, par exemple, l'adresse IP et la chaîne de l'agent utilisateur, etc. Plus il y a de données disponibles, y compris même le contenu de cookies spécifiques, ajoute à la qualité de l'unicité de cette empreinte digitale. Bien que, comme beaucoup d'autres l'ont déjà dit, le protocole HTTP ne rend pas cela à 100% infaillible - au mieux, il ne peut être qu'un assez bon indicateur.
la source
Il s'agit d'un type d'authentification assez courant utilisé par les banques.
Supposons que vous accédez au site Web de votre banque via example-isp.com. La première fois que vous y êtes, votre mot de passe vous sera demandé, ainsi qu'une authentification supplémentaire. Une fois que vous avez réussi, la banque sait que l'utilisateur "thatisvaliant" est authentifié pour accéder au site via example-isp.com.
À l'avenir, il ne vous demandera pas d'authentification supplémentaire (au-delà de votre mot de passe) lorsque vous accédez au site via example-isp.com. Si vous essayez d'accéder à la banque via another-isp.com, la banque effectuera à nouveau la même procédure.
Donc, pour résumer, l'identification de la banque est votre FAI et / ou votre netblock, en fonction de votre adresse IP. Évidemment, tous les utilisateurs de votre FAI ne sont pas vous, c'est pourquoi la banque vous demande toujours votre mot de passe.
Avez-vous déjà reçu un appel d'une société émettrice de cartes de crédit pour vérifier que tout va bien lorsque vous utilisez une carte de crédit dans un autre pays? Même concept.
la source
Vraiment, ce que vous voulez faire ne peut pas être fait parce que les protocoles ne le permettent pas. Si les adresses IP statiques étaient universellement utilisées, vous pourrez peut-être le faire. Ils ne le sont pas, donc vous ne pouvez pas.
Si vous voulez vraiment identifier des personnes , demandez -leur de se connecter.
Puisqu'ils seront probablement déplacés vers différentes pages de votre site Web, vous avez besoin d'un moyen de les suivre à mesure qu'ils se déplacent.
Tant qu'ils sont connectés et que vous suivez leur session sur votre site via des cookies / paramètres de lien / balises / quoi que ce soit, vous pouvez être à peu près sûr qu'ils utilisent le même ordinateur pendant ce temps.
En fin de compte, il est incorrect de dire que cela vous indique quel ordinateur ils utilisent si vos utilisateurs n'utilisent pas votre propre réseau local et n'ont pas d'adresses IP statiques.
Si ce que vous voulez faire est fait avec la coopération des utilisateurs et qu'il n'y a qu'un seul utilisateur par cookie et qu'ils utilisent un seul navigateur Web, utilisez simplement un cookie.
la source
Les cookies ne seront pas utiles pour déterminer les visiteurs uniques. Un utilisateur peut effacer les cookies et actualiser le site - il est alors à nouveau classé comme un nouvel utilisateur.
Je pense que la meilleure façon de procéder est de mettre en œuvre une solution côté serveur (car vous aurez besoin d'un endroit pour stocker vos données). En fonction de la complexité de vos besoins pour ces données, vous devrez déterminer ce qui est considéré comme une visite unique. Une méthode judicieuse serait de permettre à une adresse IP de revenir le jour suivant et de bénéficier d'une visite unique. Plusieurs visites d'une même adresse IP en une journée ne doivent pas être comptées comme uniques.
En utilisant PHP, par exemple, il est simple d'obtenir l'adresse IP d'un visiteur et de la stocker dans un fichier texte (ou une base de données sql).
Une solution côté serveur fonctionnera sur toutes les machines, car vous allez suivre l'utilisateur lors du premier chargement de votre site. N'utilisez pas de javascript, car il est destiné aux scripts côté client, et l'utilisateur peut l'avoir désactivé dans tous les cas.
J'espère que cela pourra aider.
la source
N'est-ce pas une très bonne raison de ne pas utiliser javascript?
Comme d'autres l'ont dit - les cookies sont probablement votre meilleure option - soyez simplement conscient des limites.
la source
Vous pouvez utiliser fingerprintjs2
Après cela, vous pouvez vérifier tous vos utilisateurs par rapport à l'existant et vérifier la similitude JSON, donc même si leur empreinte digitale mute, vous pouvez toujours les suivre.
la source
Je suppose que le verdict est que je ne peux pas identifier de manière unique par programme un ordinateur qui visite mon site Web.
J'ai la question suivante. Lorsque j'utilise une machine qui n'a jamais visité mon site Web de banque en ligne, on me demande une authentification supplémentaire. puis, si je retourne une seconde fois sur le site de banque en ligne, je ne reçois pas l'authentification supplémentaire. en lisant les réponses à ma question, j'ai décidé qu'il devait s'agir d'un cookie. par conséquent, j'ai supprimé tous les cookies dans IE et je me suis reconnecté sur mon site de banque en ligne en m'attendant à ce que les questions d'authentification soient à nouveau posées. à ma grande surprise, on ne m'a pas demandé. Cela ne laisse-t-il pas croire que la banque fait une sorte de marquage de PC qui n'implique pas de cookies?
De plus, après avoir beaucoup cherché sur Google aujourd'hui, j'ai trouvé la société suivante qui prétend vendre une solution qui identifie de manière unique les machines qui visitent un site Web. http://www.the41.com/products.asp .
J'apprécie toutes les bonnes informations si vous pouviez clarifier davantage ces informations contradictoires que j'ai trouvées, je l'apprécierais grandement.
la source
Je ferais cela en utilisant une combinaison de cookies et de cookies flash. Créez un GUID et stockez-le dans un cookie. Si le cookie n'existe pas, essayez de le lire à partir du cookie flash. S'il n'est toujours pas trouvé, créez-le et écrivez-le dans le cookie flash. De cette façon, vous pouvez partager le même GUID entre les navigateurs.
la source
Je pense que les cookies sont peut-être ce que vous recherchez; c'est ainsi que la plupart des sites Web identifient les visiteurs de manière unique.
la source
En supposant que vous ne vouliez pas que l'utilisateur contrôle, vous ne pouvez pas. Le Web ne fonctionne pas comme ça, le mieux que vous puissiez espérer, ce sont des heuristiques.
Si c'est une option pour forcer votre visiteur à installer un logiciel et à utiliser TCPA, vous pourrez peut-être retirer quelque chose.
la source
Mon message n'est peut-être pas une solution, mais je peux fournir un exemple où cette fonctionnalité a été implémentée.
Si vous visitez la page d'inscription de
www.supertorrents.org
pour la première fois depuis votre ordinateur, tout va bien. Mais si vous actualisez la page ou ouvrez à nouveau la page, cela identifie que vous avez déjà visité la page. La vraie beauté vient ici - elle identifie même si vous réinstallez Windows ou un autre système d'exploitation.J'ai lu quelque part qu'ils stockaient l'identifiant du processeur. Bien que je ne puisse pas trouver comment le faire, j'en doute sérieusement, et ils pourraient utiliser l'adresse MAC pour le faire.
Je partagerai certainement si je trouve comment le faire.
la source
Un truc:
Créez 2 pages d'inscription:
Première page d'inscription: sans e-mail ni vérification de sécurité (juste avec nom d'utilisateur et mot de passe)
Deuxième page d'inscription: avec un niveau de sécurité élevé (demande de vérification par e-mail et image de sécurité, etc.)
Pour la satisfaction du client et une inscription facile, la page d'inscription par défaut doit être la (Première page d'inscription) mais dans la (Première page d'inscription) il y a une restriction cachée. C'est la restriction IP. Si une adresse IP a tenté de s'enregistrer pour la deuxième fois (par exemple moins d'une heure) au lieu d'afficher la page de blocage. vous pouvez afficher automatiquement la (Deuxième page d'enregistrement) .
Veuillez noter: (Première page d'inscription) et (Deuxième page d'inscription) ne doivent pas être dans des pages séparées. vous ne faites qu'une page. (par exemple: register.php) et permettez de basculer entre le premier style PHP et le deuxième style PHP
la source