Toile Empreintes sur Chrome
J'ai fait des expériences avec Canvas Fingerprinting de fournir une autre couche de l'identification de l'utilisateur pour ma base de données... C'est une couche que je connais un hacker expérimenté peut se déplacer depuis l'empreinte digitale est créé à côté client, mais, bon, plus des couches de sécurité le mieux, pas vrai?
Malheureusement, chaque ordinateur Windows 7 je test de l'empreinte digitale sur pour Google Chrome produit de la même empreinte. Par exemple, aller à cette jsfiddle: http://jsfiddle.net/af1pL6fb/5/ Tous les Win7/Chrome machines que j'ai utilisé le résultat dans une table de hachage de 503251348. Si donc beaucoup de différents utilisateurs d'obtenir le même hachage, l'empreinte digitale est inutile.
J'ai essayé de dessiner toutes sortes de petites choses au hasard sur la toile pour obtenir à chaque ordinateur pour produire légèrement différente de résultat - comme c'est la théorie - mais avec tout ce que j'essaie de chaque navigateur google Chrome continue de fournir les mêmes résultats.
Ce que quelqu'un sait pourquoi Chrome est de se comporter comme cela quand même d'autres navigateurs des ordinateurs d'autres sont en me donnant des résultats différents (comme prévu)?
Ou quelqu'un connais quelque chose que je peux inclure dans la toile d'encourager des résultats différents?
OU quelqu'un connais une autre métrique que je peux utiliser pour diferentiate entre les ordinateurs? Par exemple, je suis à la recherche du navigateur.mimeType tableau comme un moyen potentiel d'avoir un semi-indicateur unique pour un navigateur donné.
Voici mon empreinte digitale de la fonction:
function fingerprint() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var txt = 'i9asdm..$#po((^@KbXrww!~cz';
ctx.textBaseline = "top";
ctx.font = "16px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.rotate(.05);
ctx.fillStyle = "#f60";
ctx.fillRect(125,1,62,20);
ctx.fillStyle = "#069";
ctx.fillText(txt, 2, 15);
ctx.fillStyle = "rgba(102, 200, 0, 0.7)";
ctx.fillText(txt, 4, 17);
ctx.shadowBlur=10;
ctx.shadowColor="blue";
ctx.fillRect(-20,10,234,5);
var strng=canvas.toDataURL();
var hash=0;
if (strng.length==0) return;
for (i = 0; i < strng.length; i++) {
char = strng.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash;
}
return hash;
}
- Si vous voulez que les empreintes digitales d'être différent, de ne pas
txt
être différente à chaque foisfingerprint()
est appelé, au lieu de codé en dur? J'ai testé votre violon sur chrome et FF, ethash
est toujours le même sur les deux (ce qui est logique en regardant vos codes, car je n'en attends passtrng
être différent). - Non, la façon canvas fingerprinting est censé travail est de vous dessiner exactement la même image pour tous les utilisateurs, mais chaque navigateur/ordinateur dessine l'image d'une manière légèrement différente. Donc, si vous mettez l'image en données, vous obtenez une chaîne de caractères qui est unique par navigateur même si chaque navigateur a dit de dessiner exactement la même chose.
- C'est bizarre. J'ai eu le même hash d'aller à votre lien. J'ai commencé à jouer avec cette hier et la première chose que je fis, fut de faire fingerprint.js parce que je savais que mes tentatives serait noobish au mieux. Vous pouvez visiter mon site et il va générer un des empreintes différentes pour chaque navigateur sur le même ordinateur. Je ne sais pas pourquoi Chrome serait toujours générer de la même empreinte depuis que Google l'utilise pour nous suivre maintenant.
- J'ai aussi lu quelque part que vous pouvez utiliser la CRC peu après l'encodage de la toile en BASE64 en utilisant le format PNG au lieu de JPG. Peut-être que c'est pourquoi vous obtenir le même résultat à chaque fois parce que sa l'aide pas cher la compression JPEG.
Vous devez vous connecter pour publier un commentaire.
Il y a une bibliothèque appelée fingerprint.js qui semble fonctionner assez bien.
J'ai intégré ce script sur mon site et vous pouvez obtenir des empreintes ici pour tester. Il fonctionne en mode navigation privée sur le navigateur Chrome obtient des empreintes différemment sur d'autres ordinateurs.
Je vais essayer de travailler sur la logique métier de l'essayer et de lier des empreintes digitales pour les mêmes personnes. Évidemment, il est difficile sur un cadavre site comme le mien où les demandes sont peu nombreuses mais sa vaut un coup de poignard.
Vous pouvez essayer et utiliser les 32 bits de CRC sur PNG décrits sur ce site.
atob
pas pris en charge dans IE <= 9.Ma Signature a été FE72FC19 bases de cette méthode.