Rustine

Cookies et CNIL : les règles pour ton site web

Ton site doit obtenir un consentement avant de déposer ou lire des cookies non essentiels. Refuser doit être aussi simple qu'accepter, les cookies strictement nécessaires sont exemptés, et la charge de la preuve du consentement repose sur toi. En pratique : un bandeau avec « Tout accepter » et « Tout refuser » au même niveau visuel, des scripts tiers bloqués tant que l'utilisateur n'a pas choisi, et un lien pour retirer le consentement à tout moment. Voici les règles exactes, la checklist, et le prompt à coller dans ton agent.

Cookies et CNIL : les règles pour ton site web
Sommaire
  1. Ce que dit la loi, en une phrase
  2. Les règles que la CNIL contrôle en priorité
  3. 1. Le consentement doit être préalable
  4. 2. Refuser doit être aussi simple qu'accepter
  5. 3. Le consentement doit être libre, spécifique, éclairé, univoque
  6. 4. Tu dois prouver le consentement
  7. Quels cookies sont exemptés de consentement ?
  8. Ce qui compte comme traceur (pas que les cookies)
  9. La checklist : ce que tu dois vérifier sur ton site
  10. Le prompt à coller dans ton agent
  11. Les erreurs qui coûtent cher
  12. Au-delà des cookies : durcis le reste
  13. Questions fréquentes
  14. Faut-il un consentement pour un site sans cookies publicitaires ?
  15. « Tout refuser » et « Tout accepter » doivent-ils être sur le même bouton ?
  16. Google Analytics nécessite-t-il un consentement ?
  17. Quelle sanction en cas de non-conformité ?
  18. Combien de temps un consentement reste-t-il valable ?
  19. Sources

Ce que dit la loi, en une phrase

La règle vient de la directive ePrivacy, transposée en droit français, et précisée par la CNIL : sauf exception, tu dois recueillir le consentement de l'internaute avant toute opération d'écriture ou de lecture sur son terminal. Ça vise les cookies, mais aussi tous les traceurs : pixels, balises, localStorage, empreinte de navigateur (fingerprinting), SDK.

Ce n'est pas une question de RGPD au sens strict : c'est le RGPD qui définit comment un consentement est valable, mais c'est ePrivacy qui décide quand tu as le droit de déposer un traceur. Les deux se combinent. Le consentement doit être libre, spécifique, éclairé et univoque.

Les règles que la CNIL contrôle en priorité

Quand la CNIL audite un site, elle regarde quatre choses. Les voici, avec ce que ça implique concrètement pour toi.

1. Le consentement doit être préalable

Tu ne déposes aucun cookie non nécessaire avant que l'utilisateur ait donné son accord. Un script Google Analytics, un pixel Meta, un lecteur de vidéo YouTube embarqué qui dépose des cookies : tout ça attend le choix de l'utilisateur.

Le « continuer la navigation vaut acceptation » est mort. Le simple renvoi aux paramètres du navigateur non plus : la CNIL a été claire là-dessus, ce n'est pas un consentement valable. Le consentement exige un acte positif : un clic, une case cochée.

2. Refuser doit être aussi simple qu'accepter

C'est le point qui a déclenché les plus grosses amendes. Si ton bandeau a un gros bouton « Tout accepter » et qu'il faut déplier trois menus pour refuser, tu es non conforme. Le bouton « Tout refuser » doit être au même niveau visuel que « Tout accepter », accessible en un clic.

3. Le consentement doit être libre, spécifique, éclairé, univoque

  • Libre : pas de « cookie wall » — tu ne peux pas bloquer l'accès au site à quelqu'un qui refuse, sauf justification réelle (un contenu payant financé uniquement par la pub, par exemple).
  • Spécifique : pas de consentement global « pour tout ». L'utilisateur choisit par finalité : mesure d'audience, publicité, personnalisation.
  • Éclairé : tu dis qui dépose quoi, pour quoi faire, et qui peut lire. Un lien vers ta politique cookies est obligatoire.
  • Univoque : un acte positif et clair. Pas de case pré-cochée.

4. Tu dois prouver le consentement

La charge de la preuve pèse sur toi, l'éditeur. Garde la trace de chaque choix : date, version du bandeau, choix enregistré. Un simple localStorage avec la date suffit pour démarrer, mais garde une copie exploitable si on te la demande.

Quels cookies sont exemptés de consentement ?

Deux catégories échappent à l'obligation de consentement.

Les cookies strictement nécessaires. Ceux qui sont indispensables à la fourniture d'un service demandé explicitement : un panier d'achat, une session de connexion, un cookie de langue, la mémorisation d'un choix de consentement lui-même. Attention : « nécessaire » ne veut pas dire « pratique ». Un cookie de préférence esthétique n'est pas strictement nécessaire.

La mesure d'audience, sous conditions strictes. La CNIL autorise une exemption pour les outils de mesure d'audience, à condition qu'ils soient : limités à la mesure de performance du site, sans croisement avec d'autres données, sans suivi individuel, et configurés pour ne pas identifier la personne. La CNIL a publié un outil d'auto-évaluation pour vérifier si ta solution y a droit. Un Google Analytics configuré par défaut, avec identifiant persistant et croisement publicitaire, n'est pas dans l'exemption : il faut le consentement.

Ce qui compte comme traceur (pas que les cookies)

Beaucoup de vibecodeurs pensent « cookies » et oublient le reste. La CNIL vise les traceurs, un concept plus large :

  • les cookies HTTP classiques,
  • le localStorage et le sessionStorage (tout ce que ton app écrit côté navigateur),
  • les pixels de suivi (Meta, LinkedIn, TikTok),
  • le fingerprinting (empreinte de navigateur),
  • les SDK mobiles.

Concrètement, si ton app codée avec une IA stocke un identifiant d'utilisateur ou de session dans localStorage pour de l'analytics, c'est un traceur soumis aux mêmes règles. C'est exactement le genre d'oubli qu'on retrouve dans les apps générées : tu peux relire les failles classiques des apps sorties d'un coup d'IA dans notre article sur les 5 failles de sécurité que ton app Lovable oublie.

La checklist : ce que tu dois vérifier sur ton site

Illustration d'une checklist de conformité avec une case cochée en orange et un crayon posé à côté.

Parcours ces points dans l'ordre. Chacun est une non-conformité possible.

  1. Inventorie tes traceurs. Liste tous les scripts tiers chargés, tous les appels à localStorage, tous les cookies posés. Si tu ne sais pas ce que ton app dépose, c'est déjà un problème.
  2. Classe-les. Strictement nécessaires (exemptés), mesure d'audience, publicité/personnalisation, réseaux sociaux.
  3. Bandeau avant tout dépôt. Vérifie qu'aucun script tiers ne se charge avant le premier choix de l'utilisateur.
  4. Deux boutons au même niveau. « Tout accepter » et « Tout refuser », même taille, même visibilité. Plus un lien « Paramétrer mes choix ».
  5. Refus effectif. En cliquant « Tout refuser », l'utilisateur ne doit plus voir partir aucune requête vers un domaine tiers de mesure ou de pub.
  6. Retrait simple. Un lien « Gérer mes cookies » en pied de page, accessible depuis toutes les pages, permet de changer d'avis aussi facilement que de consentir.
  7. Preuve. Enregistre la date et le choix de chaque visiteur.
  8. Politique cookies. Une page qui liste les cookies, leur finalité, leur durée de vie, et comment s'y opposer.

Le prompt à coller dans ton agent

C'est le cœur de la méthode Rustine : on ne s'arrête pas au constat, on livre la rustine. Colle ce prompt dans Cursor, Claude Code ou Lovable, en adaptant le chemin du fichier.

prompt
Tu vas mettre mon site en conformité cookies CNIL. Fichier principal : app/layout.tsx (ou l'équivalent dans mon framework).

1. Inventorie tous les traceurs : scripts tiers chargés (Google Analytics, Meta Pixel, Stripe, Hotjar, lecteurs embarqués, etc.) et tous les appels à localStorage/sessionStorage qui ne servent pas au fonctionnement strict du site.

2. Classe-les : "strictement nécessaires" (exemptés de consentement), "mesure d'audience", "publicité/autres" (consentement requis).

3. Ajoute un bandeau de consentement qui s'affiche avant tout dépôt de traceur non nécessaire, avec deux boutons au même niveau visuel : "Tout accepter" et "Tout refuser", plus un lien "Paramétrer mes choix" et un lien vers la politique cookies.

4. Bloque le chargement de tous les scripts tiers tant que l'utilisateur n'a pas fait son choix. Stocke ce choix dans localStorage (clé consent_cookies avec les finalités acceptées et un horodatage) et ne charge les scripts qu'après acceptation.

5. Le refus doit être aussi simple que l'acceptation : "Tout refuser" en un clic, sans script tiers déposé ensuite.

6. Ajoute un lien "Gérer mes cookies" en pied de page, présent sur toutes les pages, qui rouvre le bandeau pour modifier ou retirer le consentement.

Vérifie ensuite que : aucun script tiers ne se charge avant le premier choix de l'utilisateur, que "Tout accepter" et "Tout refuser" ont le même poids visuel, que le choix est relu à chaque navigation, et que le refus ne déclenche aucune requête vers un domaine tiers de mesure ou de pub.

Si tu veux le minimum viable, voici le squelette d'un blocage conditionnel côté React/Next.js :

jsx
// Charge un script tiers uniquement si l'utilisateur a consenti à la finalité "audience"
const consent = JSON.parse(localStorage.getItem('consent_cookies') || '{}');

if (consent.audience) {
  const script = document.createElement('script');
  script.src = 'https://www.googletagmanager.com/gtag/js?id=...';
  document.head.appendChild(script);
}

L'idée est toujours la même : aucune requête vers un tiers de mesure ou de pub avant le consentement. La technique (defer, chargement conditionnel, CMP) est secondaire ; la règle est binaire.

Les erreurs qui coûtent cher

La CNIL n'a pas fait que de la pédagogie. Les amendes sont réelles :

  • Fin 2020 : Google (100 millions d'euros) et Amazon (35 millions d'euros) sanctionnés pour avoir déposé des cookies publicitaires sans consentement préalable.
  • Début 2022 : Google (150 millions d'euros) et Meta (60 millions d'euros) sanctionnés parce que refuser était beaucoup plus compliqué qu'accepter.

Deux enseignements directs : déposer sans consentement coûte cher, et un bouton « refuser » enterré coûte encore plus cher. Le montant maximal théorique, via le RGPD, monte jusqu'à 4 % du chiffre d'affaires mondial ou 20 millions d'euros (le montant le plus élevé).

Enfin, la validité du consentement n'est pas éternelle : la CNIL recommande une durée de validité limitée, en pratique de l'ordre de 6 mois avant de redemander le choix. Ton bandeau doit donc être capable de se réafficher.

Au-delà des cookies : durcis le reste

La conformité cookies ne protège pas ton app contre les fuites techniques. Un cookie de session mal configuré (sans HttpOnly, sans Secure, sans SameSite) reste volable, même si ton bandeau est parfait. Et les en-têtes de sécurité de ton site (Content Security Policy, HSTS) limitent ce qu'un script injecté peut faire : c'est le sujet de notre guide Content Security Policy. La conformité CNIL et la sécurité technique sont deux couches complémentaires, pas alternatives.

Questions fréquentes

Faut-il un consentement pour un site sans cookies publicitaires ?

Si ton site ne dépose que des cookies strictement nécessaires (session, panier, langue), tu n'as pas besoin de consentement. Tu dois quand même informer l'utilisateur de leur présence, par exemple dans une page « cookies ». Le bandeau de consentement n'est obligatoire que dès qu'un traceur non exempté entre en jeu.

« Tout refuser » et « Tout accepter » doivent-ils être sur le même bouton ?

Non, ce sont deux boutons distincts, mais ils doivent avoir le même poids visuel : même taille, même couleur, même proximité. Un bouton « Tout accepter » bien visible et un « Tout refuser » en lien texte gris en bas de page, c'est non conforme.

Google Analytics nécessite-t-il un consentement ?

Oui, dans la configuration standard. Google Analytics dépose des identifiants persistants et peut croiser avec la publicité, donc il sort de l'exemption « mesure d'audience » de la CNIL. Tu dois recueillir le consentement avant de le charger — ou passer à une configuration conforme à l'exemption (anonymisation stricte, pas de croisement).

Quelle sanction en cas de non-conformité ?

Jusqu'à 4 % du chiffre d'affaires mondial ou 20 millions d'euros. La CNIL a déjà infligé 150 millions d'euros à Google et 60 millions à Meta début 2022. Pour une petite app, le risque est surtout une mise en demeure puis une amende proportionnée, mais le montant théorique est le même pour tous.

Combien de temps un consentement reste-t-il valable ?

La CNIL recommande une durée limitée, de l'ordre de 6 mois. Passé ce délai, redemande le choix à l'utilisateur.

Sources


Avant de publier, fais vérifier ton site par un outil qui regarde ce qu'un inconnu voit réellement : quels traceurs partent, quels cookies sont posés, et si ton bandeau bloque vraiment ce qu'il prétend bloquer. Rustine scanne ton app comme le ferait un visiteur et te montre, preuve à l'appui, ce qui fuit — avec le correctif à coller dans ton agent.

Ton app est-elle touchée ? Regarde en une minute.Scanner mon site