Les cookies et la CNIL

Par une nouvelle recommandation datant du 5 décembre 2013, la CNIL rappelle la règlementation à respecter dans le cadre de l'utilisation de cookies ou de tout autre système visant à recueillir des données sur l'internaute. La Commission Nationale Informatique et Libertés précise que chaque site doit préalablement recueillir le consentement de l'internaute avant d'enregistrer un cookie sur son appareil. Il doit également être informé clairement des conséquences de son choix. Il doit pouvoir à tout moment s'opposer à la collecte et à la transmission de ses données de navigation.

Ce que ça signifie pour les administrateurs des sites web est un véritable casse-tête :

  • l'acceptation des Conditions Générales d'Utilisation ne vaut pas pour consentement à la récupération de données,
  • l'utilisation de solutions de mesure de trafic comme Xiti ou Google Ananlytics nécessite également le consentement préalable de l'internaute car ces outils statistiques déposent des cookies
  • l'utilisation de technologies comme celles des cookies n'est possible qu'après consentement expresse de l'internaute.

Qui est responsable :

  • le responsable du site ou le directeur de la publication
  • le prestataire qui fournit la solution web (l'agence web, le webmaster)
  • les régies publicitaires qui gèrent les emplacement publicitaires sur le site.

Quelles sont les bonnes pratiques à adopter ?

C'est en théorie simple : il faut préciser clairement sur votre site comment et pourquoi vous souhaitez recueillir des données sur la navigation de vos visiteurs. Ensuite, il faut laisser le choix à l'internaute d'accepter ou de refuser l'enregistrement et la transmission de ces données.

Dans la pratique c'est impossible

Pour faire suite à la discussion qui a lieu sur le forum Webrankinfo, voici un début de solution pour tenter d'être en conformité avec la directive européenne concernant la protection des données des internautes.

Merci à ceux qui pourraient apporter des améliorations à ces scripts basés sur les scripts cookiechoices proposés par Google.

Scripts pour gérer les cookies

L'idée est la suivante :

Et si on respectait l'esprit de la loi en contournant légèrement les modalités de mise en application de la directive européenne ? Est-ce qu'on est en infraction ?
La directive nous dit qu'on ne doit pas déposer de cookies avant l'acceptation explicite effectuée par une action de l'utilisateur.

Mais si on faisait l'inverse.... je m'explique :

- un nouvel internaute arrive pour la première fois sur le site, on lui affiche une pub adsense et un traceur analytics qui laissent des méchants cookies sur son disque dur.
- certe, c'est illégal de faire ça, mais pour l'instant l'utilisateur est toujours là et on peut dialoguer avec lui
- on lui balance un bandeau pour lui expliquer qu'on vient de déposer des cookies sur son disque dur et on lui propose deux choix conformément à la directive :
refuser
accepter
- si l'utilisateur clique sur le bouton "OK" on dépose un cookie pour mémoriser son choix et à ses visites suivantes, ou aux pages suivantes, le bandeau ne sera plus affiché
- si l'utilisateur clique sur le bouton "Je refuse" on supprime tous les cookies déposés sur son disque dur et on ne lui dépose aucun cookie pour mémoriser son choix. On lui envoit une pop-up pour l'informer que tous les cookies déposés depuis ce domaine ont été supprimés
- quand il passe à la page suivante on lui affiche à nouveau une pub adsense et un code analytics et plein de cookies ainsi que le fameux bandeau. Là encore il a le choix de les refuser et dans ce cas on les supprime du disque dur

Au final, mème si on ne respecte pas exactement ce que la directive européenne dit de faire et de ne pas faire, et qui est presque impossible à réaliser simplement et complètement suicidaire pour un site qui tire ses revenus de la publicité, on est conforme avec l'esprit de la loi, c'est-à-dire ne pas déposer de cookies si quelqu'un ne l'accepte pas. En effet, quand l'utilisateur quitte le site après avoir cliqué sur le bouton "refuser", il ne subsiste sur son disque dur aucun cookie déposé par le site. Et c'est bien ce que la directive demande. Mais tant qu'il est encore sur le site on peut se permettre de lui en déposer.

C'est quoi l'important ? De laisser les gens qui ont rédigé cette directive dicter aux informaticiens comment coder ou de respecter le pourquoi la directive est faite ?

Ce script n'est qu'une ébauche de solution. Il reste des développements à faire :
Si l'utilisateur quitte le site sans avoir ni accepté, ni refusé les cookies (le cas qui va se présenter le plus couramment), il faudrait lancer un script à la fermeture de la page pour supprimer tous les cookies. Ce script aurait pour fonction :

  • 1. Vérifier la présence du cookie d'acceptation.
  • 2. Si l'utilisateur a accepté les cookies, ne rien faire de particulier
  • 3. Sinon, supprimer les cookies déposés par le domaine

Il faut aussi penser à mettre un lien sur chaque page, dans le footer par exemple, en bas de page, pour envoyer vers une page d'explications permettant à l'utilisateur de revenir sur son choix après une acceptation. Sur cette page il y aurait toutes les informations relative à la directive européenne et un lien pour lancer un script supprimant tous les cookies, y-compris le cookie de mémorisation de l'acceptation. Donc à la page suivante on revient comme si l'utilisateur arrivait sur le site pour la première fois et on lui affiche à nouveau le bandeau.

Il est également possible d'améliorer la pop-up qui s'affiche en la remplaçant par une fenêtre modale un peu plus sexy.

J'en fais donc appel aux bonnes âmes qui sont fortiches en javascript pour essayer d'améliorer ce début de script. Les différentes versions seront présentées sur cette page avec les liens vers les sites des auteurs respectifs.

Comment installer les scripts ?

Téléchargez le fichier compressé.
Décompressez les fichiers et installez les dans un répertoire.
En bas de toutes les pages HTML, ajouter les deux lignes suivantes, juste avant le </body> :

<script src="/rep/js/cookiechoices2.js" defer></script>
<script src="/rep/js/cookietxt2.js"></script>

Dans cet exemple, les scripts ont été installés dans le sous-repertoire /rep/js

Dans le fichier cookietxt2.js on peut modifier les textes qui seront affichés ainsi que l'url du lien d'explications (le remplacer par une page d'explication de votre site).

Version 2 :

Voici à présent une seconde version mais elle demande à être testée, corrigée et améliorée.

Scripts pour gérer les cookies d'un site web

Voici ce qu'elle fait :
1) Si vous cliquez sur "OK" le bandeau disparait et un cookie est déposé pour se souvenir de votre choix.
2) Si vous cliquez sur "Je refuse" le bandeau disparait, les cookies présents sont effacés et un cookie est également déposé pour se souvenir de votre choix.
3) En cas de changement de page, fermeture de la page ou rechargement de la page, un script est lancé pour réaliser les opérations suivantes :

  • a. Si aucun cookie n'est présent : ne rien faire.
  • b. Si présence du cookie d'acceptation des cookies, ne rien faire de particulier
  • c. Si présence du cookie de refus ou si l'utilisateur n'a pas cliqué, on désactive tous les cookies sauf éventuellement le cookie pour se souvenir du choix

Comment installer le second script ?

Téléchargez le fichier compressé.
Décompressez les fichiers et installez les dans un répertoire.
En bas de toutes les pages HTML, ajouter les deux lignes suivantes, juste avant le </body> :

<script src="/rep/js/cookiechoices3.js" defer></script>
<script src="/rep/js/cookietxt3.js"></script>

Sur la ligne body, la remplacer par l'instruction suivante :

<body onbeforeunload="return OnBeforeUnLoad ()">

Dans le head, ajouter les lignes suivantes :

<script type="text/javascript" src="/rep/js/cookieleave3.js">
</script>

Version 4 :

Voici à présent une dernière version très proche de celle installée sur mon site.

Scripts pour gérer les cookies d'un site web et être en conformité avec la directive européenne

Voici ce qu'elle fait :
1) Si vous cliquez sur "OK" le bandeau disparait et un cookie est déposé pour se souvenir de votre choix.
2) Si vous cliquez sur "Je refuse" le bandeau disparait, les cookies présents sont effacés et un cookie est également déposé pour se souvenir de votre choix.
3) En cas de changement de page, fermeture de la page ou rechargement de la page, un script est lancé pour réaliser les opérations suivantes :

  • a. Si aucun cookie n'est présent : ne rien faire.
  • b. Si présence du cookie d'acceptation des cookies, ne rien faire de particulier
  • c. Si présence du cookie de refus ou si l'utilisateur n'a pas cliqué, on désactive tous les cookies sauf éventuellement le cookie pour se souvenir du choix

Comment installer le dernier script ?

Téléchargez le fichier compressé.
Décompressez les fichiers et installez les dans un répertoire.
En bas de toutes les pages HTML, ajouter les deux lignes suivantes, juste avant le </body> :

<script src="/rep/js/cookiechoices4.js" defer></script>
<script src="/rep/js/cookietxt4.js"></script>

Sur la ligne body, la remplacer par l'instruction suivante :

<body onbeforeunload="return OnBeforeUnLoad ()">

Dans le head, ajouter les lignes suivantes :

<script type="text/javascript" src="/rep/js/cookieleave4.js">
</script>
Il faut bien entendu modifier le lien contenu dans cookietxt4.js par le lien menant vers votre page d'explications pour informer le visiteur.

Important !

Gardez bien en mémoire que vous n'ête pas en mesure, avec ce script, de supprimer les cookies déposés par des services tiers tels que Analytics ou Adsense, ou encore les réseaux sociaux. En effet, la particularité d'un cookie c'est qu'il ne peut être lu, modifié et supprimé que par le domaine qui l'a déposé. C'est une sécurité pour éviter que n'importe qui puisse accéder à tous les cookies présents sur votre ordinateur.

Les cookies déposés par les services tiers le sont par l'interméaire d'iframe ou de scripts qui ne s'exécutent pas sur votre domaine mais sur le domaine du fournisseur du service. Il n'y a donc pas de moyen d'action pour les supprimer autre que l'internaute, manuellement. La seule solution serait de ne pas les déposer et pour cela : ne pas utiliser de services tiers. C'est bien entendu impensable pour la majorité des sites. Ca signifie : ne plus mettre de publicité et donc se priver des revenus publicitaires qui sont pour certains sites les seuls revenus ; ne plus utiliser les réseaux sociaux et se couper du reste du monde ; ne plus avoir de statistiques concernant le trafic qui a lieu sur son propre site.