Identifier un navigateur
On peut utiliser une “empreinte de navigateur” (fingerprinting) pour par exemple chiffrer et déchiffrer les cookies, et empêcher leur récupération dans un autre navigateur en vue d'usurper l'identité d'un utilisateur.
Cf https://coveryourtracks.eff.org : lancer “test your browser” et voir le résultat détaillé : l'ensemble des données récoltées depuis le navigateur permet de l'identifier assez précisément, et hasher tout ça peut permettre de créer une clé de chiffrement / déchiffrement des données en cookie. Si ce chiffrement/déchiffrement est fait depuis un site distant, le code sera d'autant plus difficile à voir pour savoir quelles autres données du navigateur doivent être récupérées pour l'appliquer.
Par contre attention : certaines données ne sont pas forcément stables avec le temps :
- si l'utilisateur est comme moi sur un ordinateur portable, et se branche régulièrement sur différentes configurations d'écrans, le “screen size and color depth” varie.
- si l'utilisateur ajoute ou désinstalle un plugin, ça va faire sauter son empreinte (normalement c'est pas si souvent, sauf si on tombe sur un utilisateur particulièrement bidouilleur, qui teste régulièrement de nouveaux plugins, etc.) : embêtant pour le “browser plugin details”.
- Le User Agent, c'est bien mignon, mais ça saute à chaque mise à jour du navigateur.
- Le canvas / webgl fingetprint, et vendor & renderer, peut changer, à mon avis, quand sur un ordinateur portable on switche entre le mode “GPU intégrée au CPU” et “GPU externe”.
Bref peut-être n'utiliser qu'une partie de ces systèmes d'identification, dont la stabilité est suffisamment garantie.