>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
TypeScript

Comment identifier un utilisateur sans cookies ni inscription

Imaginez une situation : un utilisateur visite votre site en mode navigation privée, vide le cache, change son IP via un proxy, mais vous devez quand même déterminer qu'il s'agit de la même personne. Pourquoi ? Par exemple, pour empêcher un attaquant de forcer les mots de passe indéfiniment ou pour éviter d'afficher une réduction de bienvenue pour la dixième fois au même « nouveau » client.

Les méthodes traditionnelles comme LocalStorage ou les Cookies échouent ici — ils peuvent être effacés d'un simple clic. C'est exactement le problème que FingerprintJS résout. C'est une bibliothèque qui collecte des dizaines de signaux indirects du navigateur et de l'appareil pour créer un identifiant de visiteur unique.

FingerprintJS logo

Ce que c'est et comment ça fonctionne

FingerprintJS est un outil open-source de fingerprinting de navigateur. En termes simples, la bibliothèque interroge le navigateur : « Quelles polices avez-vous installées ? Quelle est votre résolution d'écran ? Comment rendez-vous les graphiques via Canvas ? »

Individuellement, ces données n'ont pas beaucoup de sens. Des millions de personnes utilisent Chrome sur Windows avec une résolution de 1920x1080. Mais quand vous combinez la version du moteur, la liste des langues disponibles, le fuseau horaire, les paramètres de la pile audio et les caractéristiques spécifiques de rendu des polices, vous obtenez une combinaison qui est unique pour presque chaque appareil. Toutes ces données sont hachées, et vous obtenez une chaîne courte — visitorId.

Comment configurer rapidement un projet

L'intégration est extrêmement conviviale pour les développeurs. Vous pouvez installer via npm :

npm install @fingerprintjs/fingerprintjs

Et lancer en quelques lignes de code :

import FingerprintJS from '@fingerprintjs/fingerprintjs'

async function initFingerprint() {
  // Инициализируем агент при запуске приложения
  const fpPromise = FingerprintJS.load()
  
  const fp = await fpPromise
  const result = await fp.get()

  // Вот он, наш уникальный ID
  console.log(result.visitorId)
}

initFingerprint()

Si vous ne voulez pas vous occuper des bundlers, la bibliothèque est disponible via CDN. Mais il y a un hic : certains bloqueurs de publicités agressifs ou navigateurs comme Brave peuvent bloquer le chargement des scripts depuis des domaines externes. Dans ce cas, les auteurs recommandent d'utiliser le package npm et d'intégrer le code dans votre propre bundle.

Où cela sera vraiment utile

D'après mon expérience, de tels outils reviennent le plus souvent dans les tâches de sécurité et d'analyse.

Premièrement, la prévention de la fraude. Si quelqu'un essaie de s'inscrire avec 50 comptes pour augmenter les bonus de parrainage, FingerprintJS mettra en évidence que toutes ces « différentes » personnes sont derrière le même ordinateur portable.

Deuxièmement, la restriction d'accès. Vous pouvez limiter le nombre de vues de contenu gratuit (comme le font les grands médias) sans forcer l'utilisateur à se connecter.

Troisièmement, la protection contre le forçage de mots de passe. Si des tentatives de connexion depuis un appareil utilisent différents noms d'utilisateur, c'est une raison de bloquer l'accès pour ce « fingerprint » spécifique sans affecter les autres utilisateurs de la même IP (par exemple, dans un immeuble de bureaux).

Ce que vous devez savoir à l'avance

La bibliothèque est excellente, mais ce n'est pas une « solution miracle ». La version open-source a ses limites, que les développeurs indiquent honnêtement dans le README.

La précision de la version gratuite est inférieure à celle de leur produit commercial cloud. Comme tous les calculs se produisent côté client, un utilisateur avancé peut usurper certains paramètres du navigateur pour modifier son ID.

De plus, si un utilisateur met à jour son navigateur ou son système d'exploitation, son empreinte changera probablement. Ce n'est pas un identifiant permanent, mais plutôt un marqueur temporaire très fiable.

FingerprintJS est un excellent choix si vous avez besoin d'ajouter une couche de sécurité ou une analytique de base sans utiliser de cookies. Le projet est actif, a une énorme communauté (presque 28 000 étoiles sur GitHub) et une documentation claire.

Est-ce fait pour vous ? Si l'objectif est de filtrer 90 % des bots et des fraudeurs amateurs, alors certainement oui. Pour les systèmes bancaires avec des exigences de sécurité critiques, vous devrez peut-être regarder leurs solutions payantes avec validation côté serveur, mais pour la plupart des projets web, les capacités de la version MIT sont plus que suffisantes.

Vous pouvez essayer la bibliothèque en action sur leur page de démonstration — ouvrez-la en mode normal, puis en navigation privée, et vous verrez que la magie opère.

Projets similaires