No description
  • Vue 58.7%
  • Python 30.8%
  • CSS 6%
  • TypeScript 2%
  • Dockerfile 1.7%
  • Other 0.8%
Find a file
2026-03-01 13:32:49 -05:00
backend feat: add matched id 2026-02-28 16:28:05 -05:00
front feat: improve README 2026-03-01 13:19:27 -05:00
.gitignore feat: c'est super les données personelles wouhou 2026-02-10 08:11:21 -05:00
docker-compose.yaml feat: improve README 2026-03-01 13:19:27 -05:00
README.md feat: add YT link 2026-03-01 13:32:49 -05:00

Liens

Lien git : https://forge.piair.dev/piair/GPD-P1

Lien démonstration : https://gdp.piair.dev/

Lien vidéo : https://www.youtube.com/watch?v=HcUazafnOLU

Menace étudiée

Ce projet étudie le risque liée au Browser Fingerprinting ou empreinte du navigateur. Cette méthode a pour objectif de pouvoir suivre un utilisateur, même si ce dernier refuse le suivi via des cookies ou par un compte.

Les données observées

Afin de pouvoir établir un profil, notre solutions récupère de nombreuses informations liées à la machine de l'utilisateur ainsi qu'à son navigateur. On peut citer le user-agent, mais aussi la résolution d'écran ou le fabriquant de la carte graphique. Toutes les informations collectés sont affichée sur la page d'accueil, avec une description de leur usage.

Ces données sont collectées lors du chagement de la page via un script JavaScript. Il n'y a aucune interactions de la part de l'utilisateur.

Les implications

Comme cette solution ne necessite aucune interraction de l'utilisateur et qu'elle n'a pas besoin d'utiliser de cookies ou de stockage local, il est compliqué de s'en protéger. Il est possible de créer un profil pour un utilisateur, qui va persister même si ce dernier utilise un VPN ou la navigation privée.

Les limites

Notre démonstration ne se concentre que sur la partie client. Une mise a jour du navigateur risque alors de créer un nouveau profil. Afin de mitiger ces risques, les solutions commerciales utilisent aussi des informations coté serveur (comme l'adresse IP) afin d'améliorer le suivi.

De plus, afin de rendre la démonstration plus parlante, nous avons choisi d'être très aggressif sur la gestion des profils. Cela veut dire qu'il y a de plus fortes chances de faux positifs, car des paramètres plus distants risquent d'être considérés comme égaux.

Enfin, les navigateurs "privacy focused" ont mis en place des solutions contre le suivi, ce qui limite encore plus notre application.

Scénario reproductible

Scénario fonctionnel

  • Visiter la page avec Chrome
  • Visiter la page avec Chrome en navigation privée
  • constater que l'identifiant est le même
  • fermer, puis réouvrir Chrome
  • constater que l'identifiant est toujours le même
  • visiter la page avec un autre navigateur, ou un autre appareil
  • constater que l'identifiant diffère

Protection par un navigateur plus sécurisé

  • Visiter la page avec Firefox en navigation privée
  • fermer le navigateur
  • Visiter la page avec Firefox en navigation privée
  • constater que l'identifiant est différent

Lancement

Le projet se lance avec Docker via la commande docker compose up.

Le front sera alors accessible à l'adresse : http://localhost:8000/ Le back à l'adresse : http://localhost:8080