Aller au contenu principal
Smidjan
Cybersécurité

RGPD et sites web : guide de conformité pour entreprises belges 2025

RGPD et sites web : guide de conformité pour entreprises belges 2025

Ce guide s'adresse aux personnes qui construisent des sites web et qui doivent traduire le RGPD en décisions concrètes : quelle base légale déclarer, quoi écrire dans une politique de confidentialité, comment recueillir un consentement cookies qui tienne, comment outiller les droits des personnes, et que faire dans les 72 heures qui suivent une violation de données.

Avertissement : ceci n'est pas un avis juridique

Je suis développeur et praticien sécurité, pas juriste. Cet article est un document pédagogique écrit du point de vue de la mise en œuvre technique : il ne constitue ni un avis juridique ni un conseil personnalisé, et ne remplace pas l'analyse d'un professionnel du droit sur votre situation.

Chaque affirmation chiffrée ou normative renvoie à sa source. Quand une règle relève d'une recommandation d'autorité et non d'une obligation légale, c'est dit explicitement : confondre les deux est la principale source d'erreurs dans les articles sur le sujet.

L'état du droit en 2026

Trois points circulent beaucoup, et souvent de travers.

Le règlement ePrivacy n'existera pas. La proposition de 2017, annoncée pendant huit ans comme le successeur imminent de la directive « cookies », a été formellement retirée par la Commission ; le retrait a été publié au Journal officiel le 6 octobre 2025 (JO C/2025/5423). Le texte applicable reste donc la directive 2002/58/CE modifiée par la directive 2009/136/CE — et comme il s'agit d'une directive, le texte réellement opposable est la loi nationale de transposition. Les divergences entre États membres subsistent, ce qui rend risqué de recopier de la doctrine étrangère.

Le « digital omnibus » n'est qu'une proposition. Présentée le 19 novembre 2025, elle modifierait le RGPD et la directive ePrivacy (COM(2025) 837 final, procédure 2025/0360(COD)) : exemption de consentement pour la mesure d'audience purement interne, signal de consentement lisible par machine, relèvement du seuil de dispense de registre. Rien de tout cela n'est en vigueur : le dossier en est à l'examen en commission parlementaire, sans vote, sans position du Parlement ni du Conseil, sans trilogue (suivi de procédure). Si vous lisez que « les bandeaux cookies vont disparaître », ne construisez rien dessus.

Le RGPD est inchangé. Aucune réforme du règlement 2016/679 n'a été adoptée.

Choisir la bonne base légale

Tout traitement doit reposer sur l'une des six bases de l'article 6(1) : consentement (a), contrat ou mesures précontractuelles (b), obligation légale (c), intérêts vitaux (d), mission d'intérêt public (e), intérêts légitimes (f) — ce dernier n'étant pas ouvert aux autorités publiques dans l'exécution de leurs missions.

L'erreur la plus fréquente consiste à cocher « consentement » partout. C'est le mauvais réflexe : le consentement est la base la plus fragile, puisqu'il est révocable à tout moment et que la révocation vous oblige à cesser le traitement. Une répartition défendable pour un site classique :

Traitement Base la plus adaptée Pourquoi
Formulaire de contact Mesures précontractuelles, art. 6(1)(b) La personne écrit pour obtenir une réponse : le traitement est nécessaire à sa demande
Newsletter Consentement, art. 6(1)(a) Communication non sollicitée : rien ne la rend nécessaire
Journaux de sécurité, anti-abus Intérêt légitime, art. 6(1)(f) Protection du service, avec mise en balance documentée
Cookies non essentiels Consentement, art. 5(3) ePrivacy Régime spécifique, voir plus bas
Facturation, comptabilité Obligation légale, art. 6(1)(c) Durée imposée par le droit comptable et fiscal

Sur l'intérêt légitime, la CJUE a apporté une clarification utile dans l'affaire KNLTB (C-621/22, 4 octobre 2024) : un intérêt purement commercial peut constituer un intérêt légitime, à condition qu'il soit licite, que le traitement soit strictement nécessaire, et que les droits des personnes ne prévalent pas. Ce n'est donc pas une base interdite — mais elle exige une mise en balance écrite, à conserver, et l'examen d'alternatives moins intrusives.

Attention : l'intérêt légitime ne dispense jamais du consentement cookies. Les deux régimes se superposent. L'article 5(3) de la directive ePrivacy conditionne l'accès au terminal au consentement, indépendamment de la base RGPD choisie pour le traitement qui s'ensuit.

Ce que doit vraiment contenir une politique de confidentialité

L'article 13 fixe une liste exhaustive d'informations à fournir quand les données sont collectées auprès de la personne. La plupart des politiques trouvées en ligne en oublient la moitié. Voici la liste complète, à traiter comme une checklist :

Au titre de l'article 13(1) :

  • l'identité et les coordonnées du responsable du traitement (et, le cas échéant, de son représentant) ;
  • les coordonnées du délégué à la protection des données, lorsqu'il en existe un ;
  • les finalités du traitement et sa base juridique — les deux, pas l'une des deux ;
  • lorsque la base est l'intérêt légitime, quels sont ces intérêts légitimes ;
  • les destinataires ou catégories de destinataires ;
  • le cas échéant, l'intention de transférer les données vers un pays tiers, et sur quelles garanties.

Au titre de l'article 13(2) :

  • la durée de conservation, ou à défaut les critères permettant de la déterminer ;
  • l'existence des droits d'accès, de rectification, d'effacement et de limitation ;
  • lorsque le traitement repose sur le consentement, le droit de le retirer à tout moment ;
  • le droit d'introduire une réclamation auprès d'une autorité de contrôle ;
  • si la fourniture des données est une obligation légale ou contractuelle, et les conséquences d'un refus ;
  • l'existence d'une décision automatisée ou d'un profilage, avec des informations utiles sur la logique sous-jacente.

Deux exigences sont régulièrement manquées. La première est le couple finalité + base légale pour chaque traitement : écrire « nous traitons vos données pour améliorer nos services » ne satisfait ni l'une ni l'autre. La seconde est la mention des critères de durée quand une durée fixe n'a pas de sens : c'est explicitement prévu par le texte, et c'est plus honnête qu'un chiffre inventé.

Cookies : le piège du consentement préalable

C'est ici que la majorité des sites sont réellement en défaut, et le défaut est presque toujours technique plutôt que rédactionnel.

Le régime applicable est celui de l'article 5(3) de la directive 2002/58/CE : le stockage d'informations, ou l'accès à des informations déjà stockées, dans l'équipement terminal d'un utilisateur n'est permis qu'à condition que celui-ci ait donné son accord après avoir reçu une information claire et complète. Deux exceptions seulement : la transmission d'une communication, et ce qui est strictement nécessaire à la fourniture d'un service explicitement demandé par l'utilisateur (texte consolidé).

Trois conséquences que les bandeaux ignorent souvent.

Ce n'est pas une histoire de cookies. L'article 5(3) vise le stockage et l'accès au terminal, quel que soit le mécanisme. L'EDPB l'a détaillé dans ses lignes directrices 2/2023 sur le champ technique de l'article 5(3), version 2.0 adoptée le 16 octobre 2024 : sont aussi couverts le localStorage, les pixels de suivi, le suivi par URL et l'empreinte de terminal. Remplacer un cookie par une entrée de localStorage ne change rien à l'obligation.

Ce n'est pas une histoire de données personnelles. Dans l'arrêt Planet49 (C-673/17, 1er octobre 2019), la Cour a jugé que la règle s'applique que les informations stockées constituent ou non des données à caractère personnel. Le même arrêt établit que la case pré-cochée que l'utilisateur doit décocher ne vaut pas consentement, et que l'information due comprend la durée de fonctionnement des traceurs ainsi que l'accès éventuel de tiers.

Le consentement doit être antérieur au dépôt. C'est le piège technique central : un script de mesure inséré dans le layout s'exécute au chargement de la page, donc avant que l'utilisateur ait vu le bandeau. Le bandeau devient décoratif — la collecte a déjà eu lieu. Aucune rédaction de politique ne rattrape cela.

Sur la qualité du consentement, l'article 7 impose quatre conditions dont deux sont directement techniques : le responsable doit pouvoir démontrer que la personne a consenti (7.1), et il doit être aussi simple de retirer son consentement que de le donner (7.3). Un bandeau qui propose « Accepter tout » en un clic mais impose de fouiller un pied de page pour revenir en arrière ne satisfait pas 7.3. L'arrêt Orange România (C-61/19, 11 novembre 2020) va dans le même sens : n'est pas valable un consentement dont le refus impose une démarche supplémentaire que l'acceptation n'exige pas.

En Belgique, ce n'est plus l'article 129 de la loi de 2005

Beaucoup de ressources — y compris une version précédente de cet article — renvoient à l'article 129 de la loi du 13 juin 2005 relative aux communications électroniques. Cette référence est périmée : l'article 129 a été abrogé avec effet au 10 janvier 2022 (texte consolidé).

La disposition applicable est désormais l'article 10/2 de la loi du 30 juillet 2018 relative à la protection des personnes physiques à l'égard des traitements de données à caractère personnel (texte consolidé). Il subordonne le stockage ou l'accès à des informations dans l'équipement terminal à deux conditions cumulatives : que la personne ait reçu des informations claires et précises sur les finalités et sur ses droits, et qu'elle ait donné son consentement après avoir été ainsi informée. La même exception qu'au niveau européen est reprise pour le strictement nécessaire.

La chaîne complète est donc : article 5(3) de la directive 2002/58/CE → article 10/2 de la loi du 30 juillet 2018 (combiné à l'article 125, § 1er, 1° de la loi du 13 juin 2005) → conditions de validité du consentement par renvoi aux articles 4(11) et 7 du RGPD. C'est cette base que l'APD vise dans ses décisions récentes.

La check-list cookies de l'APD

L'APD a publié le 20 octobre 2023 une check-list cookies, aujourd'hui le document opérationnel de référence en Belgique. L'autorité précise elle-même que cette énumération n'est pas exhaustive et ne crée pas de nouvelles obligations : c'est un outil de conformité, pas une norme. Il indique en revanche très précisément ce que le régulateur regarde :

  • Aucun cookie non strictement nécessaire n'est déposé — ni consulté — avant l'obtention d'un consentement valable.
  • Pas de cookie wall : l'accès au site ne peut être conditionné à l'acceptation.
  • Un bouton « refuser tous les cookies non essentiels » au même niveau que « accepter tous les cookies ». L'APD est explicite sur le cas limite : un bouton « Paramètres » à côté d'un bouton « Tout accepter » ne suffit pas.
  • Pas de deceptive design, notamment par le jeu des couleurs. Le bon exemple donné par l'APD : « Tout refuser » et « Tout accepter » affichés de la même façon.
  • Pas de case pré-cochée, ni au premier niveau ni dans les niveaux inférieurs.
  • Pas de consentement déduit de la poursuite de la navigation, de la fermeture de la bannière, d'une quelconque inactivité, ni des paramètres du navigateur.
  • Pas de regroupement de la demande de consentement avec l'acceptation de conditions générales ou d'une politique de confidentialité.
  • Un lien ou bouton visible en permanence permettant de gérer le paramétrage et de retirer son consentement en un seul clic — et ce retrait doit avoir un effet réel, pas seulement empêcher de futurs dépôts.
  • Granularité par finalité, avec une distinction entre publicité et profilage pour compte propre et pour le compte de tiers.
  • Traçabilité : conserver l'historique des versions de la bannière et de la politique cookies, en datant et numérotant celle-ci.

Ces exigences convergent avec le rapport de la task force « bandeaux cookies » de l'EDPB adopté en janvier 2023.

Le piège belge : pas d'exemption pour la mesure d'audience

Voici le point où recopier de la doctrine française conduit droit dans le mur. La CNIL admet, à des conditions strictes, une exemption de consentement pour certains outils de mesure d'audience. Ce régime n'existe pas en droit belge. L'APD indique dans sa check-list que le comptage de visiteurs n'est en principe pas exempté chez elle, et que les exemptions pratiquées par certains homologues résultent d'adaptations de leur législation nationale ou de leur jurisprudence — ce qui n'est pas le cas en Belgique.

Conséquence pratique : sur un site belge, votre outil de mesure d'audience requiert un consentement préalable, y compris auto-hébergé et anonyme, et invoquer « les critères de la CNIL » ne constitue pas une défense.

Dernier point, qui vient lui aussi d'un dossier belge : le TC String est une donnée à caractère personnel. Dans l'affaire IAB Europe (C-604/22, 7 mars 2024), née d'une décision de l'APD, la Cour a jugé que la chaîne encodant les préférences d'un internaute dans le Transparency and Consent Framework est une donnée personnelle dès lors qu'elle peut être associée, par des moyens raisonnables, à un identifiant tel qu'une adresse IP — même si l'organisation qui définit le cadre n'a pas elle-même accès aux données.

Et Google Analytics ?

L'affirmation « Google Analytics est illégal en Europe » recycle un motif juridique qui a changé. Il faut séparer deux questions.

Le volet transferts (chapitre V du RGPD) était le fondement des décisions de 2022-2023 des autorités autrichienne, française, italienne puis suédoise. Ce motif a été largement neutralisé par la décision d'adéquation EU-US Data Privacy Framework du 10 juillet 2023, toujours en vigueur — même si elle est contestée : un pourvoi est pendant devant la CJUE (C-703/25 P) après le rejet du recours Latombe par le Tribunal le 3 septembre 2025 (T-553/23).

Le volet consentement (article 5(3) ePrivacy), lui, n'a jamais été affecté. Il reste entier, et en Belgique il n'existe aucune exemption « mesure d'audience » sur laquelle s'appuyer (voir ci-dessus). Même en France, où une exemption existe, les critères posés par la CNIL — usage pour le seul compte de l'éditeur, statistiques anonymes, pas de recoupement, pas de suivi inter-sites par identifiant unifié — excluent les grandes offres du marché (critères publiés par la CNIL).

La formulation exacte, en 2026, est donc : licite quant aux transferts sous réserve du cadre d'adéquation, mais exigeant un consentement préalable valide, sans bénéfice d'exemption en Belgique. Le consent mode module la collecte selon le consentement, il ne dispense pas de le recueillir ; le server-side tagging déplace le traitement en aval, mais l'article 5(3) vise l'accès au terminal, donc l'obligation demeure.

Implémenter le consentement de façon défendable

Passons au code. Trois exigences guident la conception : rien ne part avant la décision, la décision est prouvable, et elle est révocable aussi facilement qu'elle a été donnée.

D'abord, la structure de la décision. Stockez-la dans un cookie propriétaire plutôt que dans localStorage : le cookie est envoyé au serveur, ce qui permet au rendu serveur de savoir s'il doit émettre le script — avec localStorage, la décision n'est connue qu'après hydratation, et le script part trop tôt ou provoque un scintillement.

// lib/consentement.ts
export type Consentement = {
  // Incrémentez la version quand les finalités changent : un consentement
  // donné pour d'anciennes finalités ne vaut pas pour les nouvelles.
  version: number;
  donneLe: string;   // ISO 8601
  analytics: boolean;
  marketing: boolean;
};

export const VERSION_CONSENTEMENT = 3;
export const NOM_COOKIE = 'consentement';

export function estValide(c: Consentement | null): c is Consentement {
  return c !== null && c.version === VERSION_CONSENTEMENT;
}

Ensuite, la règle absolue : le script de mesure n'est rendu que si le consentement existe. Ce n'est pas un if dans une fonction d'initialisation, c'est un rendu conditionnel côté serveur.

// app/layout.tsx
import { cookies } from 'next/headers';
import Script from 'next/script';
import { NOM_COOKIE, estValide, type Consentement } from '@/lib/consentement';
import { BandeauConsentement } from '@/components/BandeauConsentement';

async function lireConsentement(): Promise<Consentement | null> {
  const brut = (await cookies()).get(NOM_COOKIE)?.value;
  if (!brut) return null;
  try {
    return JSON.parse(brut) as Consentement;
  } catch {
    return null; // cookie corrompu : on repart d'un refus
  }
}

export default async function RootLayout({ children }: { children: React.ReactNode }) {
  const consentement = await lireConsentement();
  const analytics = estValide(consentement) && consentement.analytics;

  return (
    <html lang="fr">
      <body>
        {children}
        {/* Le <Script> n'existe tout simplement pas dans le HTML tant que le
            consentement n'a pas été donné. Aucun appel réseau, aucun dépôt.
            ❌ L'anti-modèle à bannir : rendre le script en permanence et
               tenter de le « désactiver » depuis un useEffect — au moment où
               l'effet s'exécute, la requête est partie. */}
        {analytics && <Script src="/js/mesure.js" strategy="afterInteractive" />}
        <BandeauConsentement initial={consentement} />
      </body>
    </html>
  );
}

Le bandeau, ensuite. Le point à surveiller n'est pas le texte mais la symétrie : refuser doit coûter exactement le même nombre de clics qu'accepter, sur le même niveau d'affichage.

'use client';

import { useState } from 'react';
import { VERSION_CONSENTEMENT, type Consentement } from '@/lib/consentement';

export function BandeauConsentement({ initial }: { initial: Consentement | null }) {
  const [visible, setVisible] = useState(initial === null);

  async function enregistrer(choix: { analytics: boolean; marketing: boolean }) {
    await fetch('/api/consentement', {
      method: 'POST',
      headers: { 'content-type': 'application/json' },
      body: JSON.stringify({ ...choix, version: VERSION_CONSENTEMENT }),
    });
    setVisible(false);
    // Rechargement : le layout serveur réévalue le cookie et n'émet le script
    // que maintenant. Le consentement précède donc bien le dépôt.
    location.reload();
  }

  if (!visible) return null;

  return (
    <section aria-label="Gestion des cookies">
      <h2>Cookies</h2>
      <p>
        Ce site dépose des cookies de mesure d'audience uniquement si vous
        l'acceptez. Les cookies strictement nécessaires au fonctionnement
        n'exigent pas votre accord.
      </p>
      {/* Les deux actions ont le même poids visuel et le même coût : un clic.
          Un bouton « Tout accepter » mis en avant face à un lien « Paramètres »
          discret crée l'asymétrie que l'article 7.3 interdit. */}
      <button onClick={() => enregistrer({ analytics: false, marketing: false })}>
        Tout refuser
      </button>
      <button onClick={() => enregistrer({ analytics: true, marketing: true })}>
        Tout accepter
      </button>
      <a href="/cookies">Choisir finalité par finalité</a>
    </section>
  );
}

Enfin, la preuve. L'article 7.1 met la charge sur vous : il faut pouvoir démontrer le consentement. Conservez de quoi le reconstituer, sans en profiter pour créer un fichier de suivi.

// app/api/consentement/route.ts
import { cookies } from 'next/headers';
import { createHash, randomUUID } from 'node:crypto';
import { VERSION_CONSENTEMENT } from '@/lib/consentement';

// L'APD belge « estime qu'un délai de 6 mois est en principe raisonnable »
// pour le cookie qui enregistre les préférences de consentement.
// C'est la seule durée chiffrée de sa doctrine cookies : on s'y tient.
const SIX_MOIS = 60 * 60 * 24 * 182;

export async function POST(request: Request) {
  const { analytics, marketing } = await request.json();
  const enregistrement = {
    version: VERSION_CONSENTEMENT,
    donneLe: new Date().toISOString(),
    analytics: Boolean(analytics),
    marketing: Boolean(marketing),
  };

  const magasin = await cookies();
  magasin.set({
    name: 'consentement',
    value: JSON.stringify(enregistrement),
    httpOnly: false, // lu par le client pour rouvrir le panneau
    secure: true,
    sameSite: 'lax',
    path: '/',
    maxAge: SIX_MOIS,
  });

  // Preuve côté serveur. On ne stocke PAS l'IP en clair : un condensat salé
  // suffit à rattacher une preuve à une session sans constituer un fichier
  // d'adresses. Le sel est un secret d'application, pas une valeur publique.
  await db.preuveConsentement.create({
    data: {
      id: randomUUID(),
      empreinte: createHash('sha256')
        .update(`${process.env.SEL_PREUVE}:${request.headers.get('x-real-ip') ?? ''}`)
        .digest('hex'),
      choix: enregistrement,
      texteVersion: VERSION_CONSENTEMENT, // quelle formulation a été affichée
    },
  });

  return Response.json({ ok: true });
}

Comment vérifier votre propre site. Ouvrez-le en navigation privée, ouvrez l'onglet réseau avant de charger la page, et n'interagissez pas avec le bandeau. Puis inspectez ce qui est parti et ce qui a été écrit :

# Requêtes sortantes vers des domaines tiers avant toute interaction
# (à lire dans l'onglet Réseau, filtre « domaine différent du vôtre »)

# Puis, dans la console du navigateur, avant tout clic :
# document.cookie
# Object.keys(localStorage)
# → Tout ce qui n'est pas strictement nécessaire ne devrait pas être là.

Si un identifiant de mesure d'audience apparaît avant votre premier clic, le bandeau ne sert à rien, quelle que soit sa rédaction.

Durées de conservation : distinguer le prescrit du documenté

C'est le sujet sur lequel circulent le plus de faux chiffres. Le RGPD ne fixe aucune durée : l'article 5(1)(e) impose de ne pas conserver au-delà du nécessaire, l'article 13(2) d'annoncer la durée ou les critères qui la déterminent. C'est tout. Les durées viennent en réalité de trois sources qu'il ne faut pas mélanger.

Ce qu'impose un autre texte. Les obligations comptables et fiscales fixent des durées de conservation des pièces justificatives. Elles priment sur une demande d'effacement : c'est une obligation légale au sens de l'article 6(1)(c). Vérifiez la durée applicable dans votre droit national plutôt que de recopier un chiffre lu ailleurs.

Ce que recommande une autorité. Ici, la précision compte :

  • Les « 13 mois » de durée de vie d'un traceur et les « 25 mois » de conservation des données d'audience sont des recommandations de la CNIL française, attachées à son régime d'exemption pour la mesure d'audience (source) — ni règles européennes, ni règles belges. Au passage, le « 26 mois » que l'on lit partout, et que reprenait une version antérieure de cet article, n'existe pas : la CNIL écrit 25 mois.
  • La seule durée chiffrée de la doctrine cookies belge concerne le cookie de préférences de consentement : l'APD « estime qu'un délai de 6 mois est en principe raisonnable » (check-list cookies). C'est le repère à retenir pour un site belge, et celui utilisé dans le code plus haut.

Ce que vous décidez et documentez. Pour tout le reste — message de contact, compte inactif, journal applicatif — c'est à vous de fixer une durée, de l'écrire dans le registre, de l'annoncer, et surtout de l'appliquer. Une durée annoncée mais jamais exécutée est pire que pas de durée : elle documente votre propre manquement. D'où l'intérêt d'en faire du code :

// scripts/purge.ts — exécuté par une tâche planifiée quotidienne
const REGLES = [
  { table: 'messageContact', champ: 'creeLe', mois: 36 },
  { table: 'preuveConsentement', champ: 'creeLe', mois: 24 },
  { table: 'journalAcces', champ: 'creeLe', mois: 12 },
] as const;

function limite(mois: number): Date {
  const d = new Date();
  d.setMonth(d.getMonth() - mois);
  return d;
}

for (const regle of REGLES) {
  const { count } = await db[regle.table].deleteMany({
    where: { [regle.champ]: { lt: limite(regle.mois) } },
  });
  // Journaliser le VOLUME purgé, jamais le contenu purgé.
  console.log(JSON.stringify({ event: 'purge', table: regle.table, supprimes: count }));
}

Droits des personnes : les outiller techniquement

Le règlement ouvre huit droits : accès (art. 15), rectification (16), effacement (17), limitation (18), notification aux destinataires (19), portabilité (20), opposition (21) et non-soumission à une décision automatisée (22).

Deux contraintes de délai, souvent ignorées, structurent l'outillage. L'article 12(3) impose de répondre sans délai excessif et en tout état de cause dans un délai d'un mois à compter de la réception ; ce délai peut être prolongé de deux mois supplémentaires si la complexité ou le nombre de demandes le justifient, à condition d'en informer la personne dans le mois initial en motivant le retard. L'article 12(5) précise que tout cela est gratuit ; une redevance ou un refus n'est possible que pour les demandes manifestement infondées ou excessives, et la charge de la preuve du caractère excessif pèse sur le responsable.

Un mois, c'est court si l'export est manuel. Il vaut mieux l'automatiser une fois.

// app/api/mes-donnees/route.ts — droit d'accès et portabilité (art. 15 et 20)
import { auth } from '@/lib/auth';

export async function GET() {
  const session = await auth();
  if (!session?.user) {
    return Response.json({ error: 'Non authentifié' }, { status: 401 });
  }

  // La portabilité (art. 20) exige un format structuré, couramment utilisé
  // et lisible par machine : JSON convient, un PDF non.
  const donnees = {
    exporteLe: new Date().toISOString(),
    compte: await db.utilisateur.findUnique({
      where: { id: session.user.id },
      select: { email: true, nom: true, creeLe: true }, // jamais le condensat du mot de passe
    }),
    messages: await db.messageContact.findMany({
      where: { utilisateurId: session.user.id },
      select: { sujet: true, contenu: true, creeLe: true },
    }),
    consentements: await db.preuveConsentement.findMany({
      where: { utilisateurId: session.user.id },
      select: { choix: true, creeLe: true },
    }),
  };

  return new Response(JSON.stringify(donnees, null, 2), {
    headers: {
      'content-type': 'application/json; charset=utf-8',
      'content-disposition': 'attachment; filename="mes-donnees.json"',
      'cache-control': 'no-store',
    },
  });
}

Le droit à l'effacement demande plus de nuance. Il n'est pas absolu : l'article 17(3) prévoit des exceptions, dont le respect d'une obligation légale de conservation. Supprimer purement et simplement une ligne de facturation vous mettrait en défaut vis-à-vis du droit comptable. La bonne réponse technique est l'anonymisation sélective : on efface ce qui identifie, on conserve ce que la loi impose.

// app/api/compte/effacement/route.ts
export async function POST(request: Request) {
  const session = await auth();
  if (!session?.user) {
    return Response.json({ error: 'Non authentifié' }, { status: 401 });
  }
  const id = session.user.id;

  await db.$transaction(async (tx) => {
    // 1. Effacement réel de ce qui n'a aucune raison d'être conservé.
    await tx.preferenceUtilisateur.deleteMany({ where: { utilisateurId: id } });
    await tx.messageContact.deleteMany({ where: { utilisateurId: id } });

    // 2. Anonymisation de ce que la comptabilité impose de garder.
    //    L'identifiant est remplacé par une valeur non réversible : la facture
    //    reste vérifiable, la personne n'est plus identifiable.
    await tx.facture.updateMany({
      where: { utilisateurId: id },
      data: { utilisateurId: null, nomClient: 'Client supprimé', adresse: null },
    });

    // 3. Le compte lui-même. On garde une trace minimale de la demande pour
    //    prouver qu'on y a donné suite — c'est aussi une obligation.
    await tx.utilisateur.delete({ where: { id } });
    await tx.journalEffacement.create({
      data: { demandeLe: new Date(), traiteLe: new Date() },
    });
  });

  return Response.json({ ok: true });
}

Un point d'attention sur les sauvegardes : un enregistrement effacé en base reste dans les sauvegardes jusqu'à leur rotation. La pratique admise est de documenter le délai de rotation, de ne pas restaurer sélectivement une donnée effacée, et de rejouer la suppression après toute restauration complète. Écrivez-le dans votre procédure ; c'est exactement le genre de point qu'un contrôle examinera.

Le registre des traitements

L'article 30 impose de tenir un registre des activités de traitement. Le paragraphe 5 prévoit bien une dérogation pour les organisations de moins de 250 employés, mais elle est assortie de trois conditions qui la vident largement de sa portée : elle ne s'applique pas si le traitement est susceptible d'engendrer un risque pour les droits et libertés des personnes, s'il n'est pas occasionnel, ou s'il porte sur des catégories particulières de données (art. 9) ou sur des données relatives à des condamnations pénales (art. 10).

« Non occasionnel » suffit à disqualifier presque tout site web : un formulaire de contact qui fonctionne en permanence n'est pas un traitement occasionnel. En pratique, tenez le registre. C'est de toute façon le document qu'une autorité demandera en premier, et le construire force à répondre à des questions que l'on repousse volontiers.

Traitement Finalité Base légale Catégories de données Destinataires Durée Transferts hors UE
Formulaire de contact Répondre à une demande Art. 6(1)(b) — mesures précontractuelles Nom, e-mail, contenu du message Hébergeur, service d'envoi d'e-mails 36 mois après le dernier échange Aucun
Newsletter Envoi d'actualités Art. 6(1)(a) — consentement E-mail, date du consentement Plateforme d'envoi Jusqu'au désabonnement Selon le prestataire
Journaux de sécurité Détection d'abus Art. 6(1)(f) — intérêt légitime Adresse IP, horodatage, URL Interne 12 mois Aucun
Mesure d'audience Statistiques de fréquentation Consentement (art. 10/2 de la loi du 30 juillet 2018) Identifiant de session, pages vues Prestataire de mesure À fixer et justifier À documenter

Ce tableau n'est pas un modèle à recopier : c'est la forme minimale des colonnes exigées par l'article 30(1). Le contenu dépend entièrement de ce que fait réellement votre site — et la seule façon de le remplir juste est d'aller lire votre propre code et la liste de vos prestataires.

Le délégué à la protection des données : le mythe des 250 salariés

Il faut corriger une confusion très répandue, que j'avais moi-même reprise dans une version précédente de cet article : le seuil de 250 employés ne concerne pas le DPD. Il figure à l'article 30(5), pour le registre, et nulle part ailleurs.

La désignation d'un délégué à la protection des données est régie par l'article 37(1), qui ne comporte aucun seuil d'effectif. Elle est obligatoire dans trois cas seulement :

  1. le traitement est effectué par une autorité ou un organisme public, à l'exception des juridictions agissant dans l'exercice de leur fonction juridictionnelle ;
  2. les activités de base consistent en des opérations qui, du fait de leur nature, leur portée ou leurs finalités, exigent un suivi régulier et systématique à grande échelle des personnes concernées ;
  3. les activités de base consistent en un traitement à grande échelle de catégories particulières de données (art. 9) ou de données relatives à des condamnations pénales (art. 10).

Le mot déterminant est « activités de base » : il s'agit du cœur de métier, pas des fonctions support. Une PME de 400 personnes dont le métier n'implique ni suivi systématique à grande échelle ni données sensibles n'est pas tenue de désigner un DPD. Inversement, une structure de cinq personnes dont le modèle repose sur le profilage massif l'est. La taille n'est pas le critère ; la nature de l'activité l'est. L'APD le formule ainsi : il n'est « ni possible, ni cohérent avec une approche basée sur les risques » de fixer un nombre précis, et la « grande échelle » s'apprécie au regard du nombre de personnes concernées, du volume de données, de la durée du traitement et de son étendue géographique (cas de désignation obligatoire).

Deux précisions belges. D'abord, la loi du 30 juillet 2018 ajoute, en ses articles 21 et 190, des cas de désignation obligatoire qui s'ajoutent à ceux de l'article 37(1) : si vous relevez d'un secteur encadré, vérifiez-les. Ensuite, la désignation est à notifier à l'APD ; l'autorité recensait 8 533 organisations avec un DPO actif enregistré au 31 décembre 2025 (rapport annuel 2025).

Rien n'interdit de désigner volontairement un DPD — mais attention : une désignation volontaire fait s'appliquer l'intégralité des articles 37 à 39, y compris les garanties d'indépendance et de moyens.

Violation de données : les 72 heures en pratique

L'article 33(1) impose au responsable du traitement de notifier la violation à l'autorité de contrôle compétente « sans délai excessif et, si possible, 72 heures au plus tard après en avoir pris connaissance », sauf si la violation n'est pas susceptible d'engendrer un risque pour les droits et libertés des personnes. Passé ce délai, la notification doit être accompagnée des motifs du retard.

Trois précisions qui changent la conduite à tenir :

  • Le compteur démarre à la prise de connaissance, pas à la survenance des faits ni à la fin de l'investigation. On notifie avec ce que l'on sait, quitte à compléter ensuite.
  • Le sous-traitant doit alerter le responsable du traitement sans délai excessif dès qu'il a connaissance d'une violation (art. 33(2)) — c'est une clause à faire figurer dans vos contrats, avec un délai chiffré.
  • L'article 33(5) impose de documenter toute violation, y compris celles qui ne sont pas notifiées : les faits, les effets et les mesures correctrices. Cette documentation doit permettre à l'autorité de vérifier votre respect de l'article. Autrement dit, décider de ne pas notifier est une décision qu'il faut être capable de justifier par écrit.

L'article 34 ajoute une seconde obligation, distincte : lorsque la violation est susceptible d'engendrer un risque élevé, il faut aussi en informer les personnes concernées sans délai excessif. Trois exceptions lèvent cette obligation : les données étaient rendues incompréhensibles aux personnes non autorisées, typiquement par chiffrement ; des mesures ultérieures ont fait disparaître le risque élevé ; ou l'information individuelle exigerait des efforts disproportionnés — auquel cas une communication publique ou une mesure d'effet équivalent s'impose.

La première exception est la meilleure raison technique de chiffrer au repos : elle transforme une notification à des milliers de personnes en une notification à l'autorité seule.

Concrètement, préparez la procédure avant d'en avoir besoin. Le jour J, on n'improvise pas en trois jours :

  • Heure 0 — Qualifier : y a-t-il eu destruction, perte, altération, divulgation ou accès non autorisé à des données personnelles ? Noter la date et l'heure de prise de connaissance, c'est le point de départ du délai.
  • Heures 0-6 — Contenir : révoquer les accès et les clés compromis, invalider les sessions, couper le vecteur. Préserver les journaux avant qu'ils ne tournent — c'est l'erreur classique.
  • Heures 6-24 — Évaluer : quelles catégories de données, combien de personnes, quelles conséquences probables. Les données étaient-elles chiffrées ?
  • Heures 24-72 — Notifier l'autorité de contrôle. Si vous n'avez pas tous les éléments, notifiez quand même : le règlement prévoit une notification par phases.
  • Ensuite — Informer les personnes si le risque est élevé, consigner l'incident au registre des violations, et corriger la cause.

La procédure belge a changé en juin 2025

Point important, et souvent encore mal documenté ailleurs : le formulaire PDF de notification n'existe plus. Depuis juin 2025, la notification à l'Autorité de protection des données se fait exclusivement via son portail en ligne, et elle se déroule en deux temps (page officielle) :

  • Partie 1 — un formulaire court, à introduire dans les 72 heures.
  • Partie 2 — un formulaire détaillé, à compléter dans les 21 jours calendrier suivant l'introduction de la partie 1, avec sauvegarde possible en cours de route et des rappels automatiques.

L'accès au portail passe par le compte APD et, pour la plupart des entreprises belges, par un rôle eGov dédié. C'est exactement le genre de chose qu'il faut avoir configuré avant l'incident : créer un accès administratif pendant les 72 heures est une perte de temps que vous n'aurez pas.

Deux points de vigilance issus des publications de l'APD. D'abord, vérifiez que l'APD est bien l'autorité compétente — certains secteurs relèvent d'un autre organe de contrôle. Ensuite, sachez que l'information des personnes concernées est un point de contrôle actif : l'APD indique examiner, dans la partie 2, la qualité de cette information et vérifier si la justification éventuelle de son absence s'applique réellement. Décider de ne pas informer les personnes n'est pas une case à décocher, c'est une décision à motiver.

Pour donner un ordre de grandeur : l'APD a reçu 1 216 notifications de violation en 2025, contre 1 455 en 2024. Les causes les plus fréquentes ne sont pas des intrusions sophistiquées mais des erreurs de routage — e-mail au mauvais destinataire (12,85 %), courrier ou colis mal adressé (9,98 %) — devant le hameçonnage (9,85 %) (rapport annuel 2025).

Sous-traitants et transferts hors UE

Chaque prestataire qui traite des données pour votre compte — hébergeur, service d'envoi d'e-mails, outil de mesure, plateforme de paiement — est un sous-traitant au sens de l'article 28. Le recours à un sous-traitant doit être encadré par un contrat (souvent appelé DPA) fixant l'objet, la durée, la nature et la finalité du traitement, les catégories de données, et les obligations du sous-traitant. La plupart des grands fournisseurs publient un DPA type ; encore faut-il l'avoir accepté et en conserver une copie datée.

Pour les transferts hors Union européenne, le chapitre V exige une base : décision d'adéquation (art. 45), garanties appropriées comme les clauses contractuelles types (art. 46), ou dérogation (art. 49). L'arrêt Schrems II (C-311/18, 16 juillet 2020) a invalidé le Privacy Shield tout en confirmant la validité des clauses contractuelles types, assortie d'une obligation d'évaluation au cas par cas.

Depuis le 10 juillet 2023, une décision d'adéquation couvre les organisations américaines certifiées au EU-US Data Privacy Framework. Elle est en vigueur, mais son avenir n'est pas garanti : un pourvoi est pendant devant la CJUE et le Tribunal, en rejetant le recours en première instance, a expressément limité son examen à la situation de fait et de droit au jour de l'adoption de la décision en 2023. Le précédent Schrems II montre qu'une invalidation produit ses effets immédiatement. La conclusion pratique n'est pas d'éviter tout prestataire américain, mais de savoir lesquels vous utilisez et pour quelles données, afin de pouvoir réagir sans avoir à cartographier votre système dans l'urgence.

Un point de vigilance issu de la jurisprudence récente : dans l'affaire EDPS c. CRU (C-413/23 P, 4 septembre 2025), la Cour a jugé que la pseudonymisation peut effectivement empêcher un destinataire d'identifier la personne — la qualification de donnée personnelle n'est donc pas absolue — mais que l'obligation d'information s'apprécie du point de vue du responsable du traitement au moment de la collecte. Traduction pratique : pseudonymiser avant de transmettre à un prestataire est une bonne mesure, elle ne vous dispense pas de mentionner ce destinataire dans votre politique de confidentialité.

Sanctions : ce que dit le règlement, et ce qu'il faut en retenir

L'article 83 prévoit deux paliers d'amendes administratives.

Le premier palier (art. 83(4)) plafonne à 10 millions d'euros ou 2 % du chiffre d'affaires annuel mondial total, le montant le plus élevé étant retenu. Il vise notamment les manquements aux articles 25 à 39 : protection des données dès la conception, sécurité du traitement, registre, notification des violations, désignation du DPD.

Le second palier (art. 83(5)) plafonne à 20 millions d'euros ou 4 % du chiffre d'affaires annuel mondial total. Il vise les manquements aux principes de base (articles 5 à 9, dont le consentement), aux droits des personnes (articles 12 à 22), aux règles de transfert (articles 44 à 49), et le non-respect d'une injonction de l'autorité de contrôle.

Ce sont des plafonds, pas des montants types. L'article 83(2) impose de tenir compte de la nature, de la gravité et de la durée du manquement, de son caractère intentionnel ou négligent, des mesures prises pour atténuer le dommage, du degré de coopération et de la manière dont l'autorité a eu connaissance des faits.

Ce qui a réellement été prononcé en Belgique sur les cookies

Une version précédente de cet article citait trois amendes belges chiffrées que je n'ai retrouvées dans aucune décision publiée de l'Autorité de protection des données. Elles ont été supprimées. Le même avertissement vaut pour plusieurs « guides RGPD Belgique » qui font circuler des montants de 350 000 €, 120 000 € ou 75 000 € : ils sont contredits par le rapport annuel officiel de l'APD, qui fait état de 4 amendes en 2025 pour 75 700 € au total.

Voici les décisions cookies belges réellement publiées, avec leur référence :

Décision Date Sanction Manquements retenus
12/2019 17 décembre 2019 15 000 € Première sanction cookies belge
85/2022 — Roularta 25 mai 2022 50 000 € Cookies non essentiels déposés avant consentement, cases pré-cochées, retrait non équivalent
103/2022 — groupe Rossel 16 juin 2022 50 000 € Cookies déposés avant consentement, intérêt légitime invoqué à tort, navigation assimilée à un consentement
113/2024 — Mediahuis 6 septembre 2024 Injonctions sous astreinte, pas d'amende Décision annulée par la Cour des marchés le 19 mars 2025

Trois enseignements. Premièrement, les montants réels sont d'un ordre de grandeur très éloigné des plafonds du règlement. Deuxièmement, les manquements sanctionnés sont exactement ceux décrits plus haut : dépôt avant consentement, cases pré-cochées, asymétrie du retrait. Troisièmement, l'APD n'a plus infligé d'amende cookies depuis 2022 : elle procède par injonctions, avertissements ou classements — et sa décision la plus sévère a été annulée en appel.

L'affaire la plus lourde reste celle d'IAB Europe : 250 000 € par la décision 21/2022 du 2 février 2022, position confirmée au fond par la CJUE le 7 mars 2024 (C-604/22), puis décision formellement annulée pour vice de procédure par la Cour des marchés le 14 mai 2025, et validation du plan d'action à son tour annulée le 7 janvier 2026 avec renvoi devant l'APD. Le dossier n'est donc pas clos (suivi par l'APD).

Ce que dit l'activité réelle de l'autorité

Le rapport annuel 2025 donne une image plus utile que les plafonds : 1 394 plaintes reçues, en hausse de 67 % sur un an ; 214 décisions de la Chambre Contentieuse ; 4 amendes pour 75 700 €, ramenées à 59 700 € après annulation de l'une et réduction d'une autre par la Cour des marchés. L'APD note d'ailleurs elle-même la tendance de cette juridiction à réduire substantiellement les montants qu'elle prononce.

Le service d'inspection indique par ailleurs que la gestion des cookies et du traçage demeure une priorité de contrôle, en relevant que des responsables de traitement doivent encore régulièrement corriger le recueil du consentement pour les cookies non strictement nécessaires, et que le placement de ces cookies et la présentation des choix ne sont pas toujours transparents — l'usage de la couleur étant cité explicitement.

Enfin, la sanction financière n'est ni la seule ni la plus fréquente. Les autorités disposent d'un éventail de mesures correctrices (art. 58) : avertissement, rappel à l'ordre, injonction de mise en conformité sous délai, astreinte, et limitation ou interdiction temporaire ou définitive d'un traitement. Pour un site qui vit de sa publicité ou de sa mesure d'audience, une interdiction de traitement pèse souvent plus lourd qu'une amende.

Checklist technique

Base — ce qui doit exister avant la mise en ligne

  • HTTPS partout ; aucun formulaire servi ou soumis en clair
  • Politique de confidentialité couvrant les douze points des articles 13(1) et 13(2)
  • Pour chaque traitement : finalité et base légale écrites
  • Aucun traceur non essentiel déposé avant le consentement — vérifié dans l'onglet réseau, pas dans le code
  • Y compris la mesure d'audience : aucune exemption de consentement en Belgique
  • Bandeau symétrique : « Tout refuser » et « Tout accepter » au même niveau et de même apparence
  • Aucune case pré-cochée, à aucun niveau ; aucun consentement déduit du défilement ou de la fermeture
  • Consentement horodaté et versionné, conservé comme preuve (art. 7.1)
  • Cookie de préférences limité à 6 mois (repère chiffré de l'APD)
  • Moyen de retirer son consentement accessible en permanence, en un clic (art. 7.3)
  • Politique cookies datée et numérotée, versions antérieures archivées
  • Registre des traitements tenu, y compris sous 250 employés
  • DPA signé et archivé avec chaque sous-traitant
  • Adresse de contact pour l'exercice des droits, effectivement relevée

Consolidation — ce qui rend la conformité tenable dans la durée

  • Durées de conservation exécutées par une tâche planifiée, pas seulement annoncées
  • Export des données automatisé (art. 15 et 20), format JSON
  • Procédure d'effacement distinguant suppression réelle et anonymisation sélective
  • Procédure de violation écrite : qui qualifie, qui décide, qui notifie — avec les accès au portail APD déjà créés
  • Chiffrement au repos des données sensibles — c'est l'exception de l'article 34(3)(a)
  • Cartographie à jour des prestataires et de la localisation des traitements
  • Analyse d'impact (AIPD, art. 35) réalisée si le traitement est susceptible d'engendrer un risque élevé
  • Mise en balance écrite pour chaque traitement fondé sur l'intérêt légitime
  • Revue annuelle du registre, de la politique et de la liste des sous-traitants

Sources

Textes

Articles du RGPD cités

Jurisprudence de la Cour de justice

Autorité de protection des données (Belgique)

Comité européen de la protection des données et Commission

Une erreur, une source manquante ou un point qui a évolué depuis la publication ? Le formulaire de contact du site est ouvert : les corrections sourcées sont les bienvenues.

Besoin d'accompagnement ?

Smidjan vous aide à mettre en place ces solutions pour votre entreprise en Belgique.

Échange directJe réponds personnellement
JB

À propos de l'auteur

Jean-Baptiste Dhondt
Praticien en cybersécurité, cloud, réseau, infra & web

Praticien en cybersécurité (Smidjan) : sécurité cloud, réseau, infrastructure et web, et conformité NIS2 / CyberFundamentals (CCB), en Wallonie.

Disponible immédiatement pour un poste en sécurité, réseaux ou infrastructure — voir la page contact.

Disponible immédiatement