Contacter l'assistance

Nous répondons par e-mail, en général sous deux jours.

Pour prévenir les abus, Google reCAPTCHA vérifie cet envoi ; des données sont transmises à Google. Le script n'est chargé qu'à l'ouverture de ce formulaire.

← Tous les articles

Compter sans cookie

Un compteur de visiteurs a une tâche délicate : il doit distinguer deux visites l'une de l'autre. S'il en est incapable, une personne qui recharge une page dix fois ressemble à dix personnes, et le chiffre affiché sur le site relève de la fiction.

La solution habituelle est un cookie. Ce site n'en utilise pas. Voici ce qu'il fait à la place, et pourquoi la version honnête de cette phrase a demandé du travail pour être méritée.

Le cookie que personne n'avait demandé

Jusqu'à cette année, chaque requête vers le compteur démarrait une session PHP. C'est une ligne de code, elle a l'air inoffensive, et elle signifiait que chaque visiteur de chaque site utilisant un compteur Stats4U recevait un cookie de session — posé par nous, sur la page d'autrui, sans que personne ne l'ait voulu.

les ingrédientsIP · UA · IDdate · sel du jourempreinte16 octetsgardée2 joursl'adresse elle-même n'est jamais écritele sel parti, personne ne peut recalculer un jour — nous non plus

Cette session n'a jamais servi à rien. La preuve était facile à trouver au premier regard : le répertoire où sont stockées les sessions contenait zéro fichier. Cela posait un cookie sur les sites d'autres personnes, pendant des années, pour conserver des données qui n'étaient jamais écrites ni jamais lues.

Elle a disparu du chemin de comptage. Une session n'est désormais démarrée que lorsque quelqu'un crée ou reconfigure un compteur — une action entreprise délibérément, sur ce site.

Ce qui l'a remplacé

Les visiteurs sont distingués les uns des autres au moyen d'un hachage. Cinq éléments y entrent :

  • l'adresse IP
  • le user agent
  • l'ID du compteur
  • la date du jour
  • un secret qui change chaque jour

Il en ressort 16 octets, qui sont ce qui est stocké. Ils sont conservés deux jours puis supprimés. L'adresse IP elle-même n'est jamais notée nulle part.

Deux visites de la même personne, le même jour, vers le même compteur produisent les mêmes 16 octets, si bien que la seconde est reconnue comme une répétition. Demain, la même personne produira quelque chose de complètement différent, parce que la date et le secret auront tous deux changé. C'est tout le mécanisme.

Pourquoi le secret change régulièrement

C'est la partie qu'il est facile de mal faire, et c'était mal fait ici jusqu'à cette année.

L'ancienne version utilisait un seul secret permanent. Cela produisait bien des hachages différents pour des personnes différentes, ce qui semble correct. Mais cela signifiait que quiconque détenait ce secret pouvait prendre une adresse IP suspectée et recalculer son hachage pour n'importe quel jour de l'archive — transformant une table de valeurs anonymes de 16 octets en un registre de qui a visité quoi, aussi loin que remontaient les données.

Le secret change désormais chaque jour, et les anciens sont supprimés au bout de deux jours. Une fois cela fait, le calcul ne peut plus être effectué, par personne. Cela inclut celui qui exploite ce site, et c'est précisément le but : une protection qui dépend de la bonne volonté de l'opérateur n'est pas une protection, c'est une promesse.

La résolution d'écran, et une leçon sur la suppression des choses

La résolution d'écran était autrefois collectée. C'est un signal classique de fingerprinting, et elle ne valait pas ce qu'elle coûtait, elle a donc été retirée du script qui s'exécute sur la page du site.

Cela n'a pas suffi, et la raison mérite d'être connue de quiconque construit quoi que ce soit pour les sites web d'autres personnes. Le script est servi avec une durée de vie de cache de sept jours, si bien que d'anciennes copies sont restées actives dans les navigateurs des visiteurs pendant une semaine après le changement. Pire, certains sites ne renvoient pas du tout vers le script — ils en ont collé une copie dans leurs propres pages il y a des années, et cette copie continuera de faire exactement ce qu'elle faisait le jour où elle a été collée, pour toujours.

La résolution a donc continué d'arriver. La solution a consisté à faire en sorte que le serveur refuse la valeur, quel que soit celui qui l'envoie. Retirer une collecte de données du client n'arrête que les nouveaux clients. La retirer du serveur l'arrête immédiatement.

Vérification indépendante

Rien de tout cela ne vaut grand-chose en tant qu'affirmation, voici donc la commande :

  • curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie

Aucune sortie signifie qu'aucun cookie n'a été posé.

Une dernière mise en garde, toujours la même : ceci décrit ce que fait le logiciel. La question de savoir si cela satisfait les règles applicables dans un pays donné revient à quelqu'un de qualifié pour y répondre, et ceci n'est pas cette réponse.

Mise à jour du 11 septembre 2026 : À partir du 27 août 2026, le script lisait de nouveau la résolution de l'écran, la largeur de la fenêtre du navigateur et le rapport de pixels, sur tous les sites qui l'intégraient. Depuis le 11 septembre 2026, il ne le fait plus que là où le propriétaire du site l'active avec data-screen="1". Sans cet attribut, le script actuel ne lit aucune des trois valeurs, et le serveur ne les enregistre plus non plus lorsqu'elles proviennent d'anciennes copies du script.

Publicité