Comment puis-je utiliser les empreintes digitales du navigateur dans mon site web?

je veux identifier les utilisateurs accédant à mon API même s'ils effacent le cookies ou localstorage partout où je stocke les informations de la session en cours. Je vois que browser fingerprinting est l'un des moyens pour atteindre ce jusqu'à une certaine précision. Je suis en train de travailler sur un angular2 projet pour la fronde. J'ai les questions suivantes:

  1. existe-t-il des bibliothèques disponibles pour angular2 qui créent l'empreinte digitale du navigateur? (J'ai vu ng2-appareil-détecteur de. Ce n'est pas donner beaucoup d'information et aussi pas d'empreinte digitale hachée. Donc, dois-je le hachage de moi-même? )
  2. vu fingerprintjs2 cela prend beaucoup de l'info, mais n'a pas de mise en œuvre de angular2, mais je me demande quelle serait l'importance de l'empreinte digitale? Pour une requête dans mon API, je vérifierai si la charge utile contenait un fingerprint qui existait déjà dans les sessions existantes? (Vraiment une charge utile? Ce sera un POST demande. L'utilisateur peut simplement envoyer une chaîne longue aléatoire comme le haché fingerprint et L'API traitera la requête comme si elle venait d'une autre personne.)
  3. je suppose donc que je vais devoir utiliser une API qui non seulement génère un hashed fingerprint dans le frontend mais valide aussi après que la requête a atteint L'API, quelque chose comme Google's reCaptcha. Existe-il des Api comme tels?
  4. S'il n'y a pas D'API en tant que telle, je suppose que je vais devoir implémenter une telle fonctionnalité dans mon API elle-même?

Veuillez écrire votre suggestion.

14
demandé sur Ashish Ranjan 2017-06-22 13:43:01

2 réponses

1. Il semble qu'il n'y n'est pas toute bibliothèque(portative ou autre) spécialement pour Angular2.

2. vous n'avez pas besoin D'une version Angular2 de celui-ci, il suffit d'injecter le fichier source dans votre index.html et vous pouvez l'utiliser comme ceci, PLUNKER

declare var Fingerprint2: any;

@Component({
  selector: 'my-app',
  template: `Hello`,
})
export class App {
  constructor() {
    new Fingerprint2().get(function(result, components){
      console.log(result); // a hash, representing your device fingerprint
      console.log(components); // an array of FP components
    });
  }
}

Vous avez à traiter ce hash comme toute autre jeton JWT, exclusivement ou inclusivement. Mais vous ne besoin de le stocker quelque part, comme tout autre jeton, c'est comme ça que vous pourrez vérifier son authenticité. Si un utilisateur tempère la requête et le hachage, JWT a un mécanisme de validation qui le rend invalide lors de la falsification, mais je suppose que le hachage des empreintes digitales ne peut pas fournir cette sécurité.

3. non, aucun (IMK).

4. Si non.-2 travaille pour vous je suppose que vous serez beaucoup mieux.

4
répondu Ankit Singh 2017-06-26 07:15:49

Ankit à peu près répondu par rapport à L'angle. Voici une API qui fournit une empreinte digitale pour que vous n'ayez pas besoin de l'implémenter vous-même:

API des empreintes digitales du navigateur

bien que cette solution ne soit pas un composant angulaire (ou quoi-have-you), Vous pouvez faire un appel AJAX pour obtenir l'empreinte digitale et la soumettre à votre serveur.

Divulgation Complète: je suis le développeur de ce service.

0
répondu B Seven 2017-07-05 01:15:30