TP – Traiter une demande d'accès, rédiger les mentions d'information et analyser une bannière de cookies
BTS SIO SISR 1re année – Bloc 3 – S07
Note
But. Situation : Sur quel fondement collecter des données, comment en informer les personnes, et que répondre quand elles exercent leurs droits ?
Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes (« J'anticipe »). Puis tu testes et tu notes ce que tu constates. Tu comprends ce que fait chaque commande (« Je comprends »). Un bilan de compétences clôt la séance. Les manipulations se font sur des machines virtuelles de laboratoire, isolées du réseau de l'établissement. Les identifiants communs d'un TP sont des identifiants de laboratoire : ils ne se réutilisent jamais ailleurs.
Objectif
Traiter techniquement une demande d'accès et une demande d'effacement sur une base de données, rédiger les mentions d'information d'un formulaire, puis analyser le comportement d'un site vis-à-vis des cookies.
Contraintes
- Binôme, durée : 3 h 20.
- La société CycloShop et ses clients sont fictifs.
- Partie C : sites publics en navigation privée, sans saisir aucune donnée personnelle, sans te connecter.
Partie A. Demande d'accès et demande d'effacement (70 min)
Situation. CycloShop (vente de pièces de vélo en ligne) reçoit ce courriel : « Bonjour, je suis Camille Roux (camille.roux@example.com). Je souhaite recevoir une copie de toutes les données que vous détenez sur moi, puis que vous les supprimiez. »
A1. Créer la base de laboratoire
Installe le client SQLite, puis crée la base avec le script (données inventées).
sudo apt install -y sqlite3
mkdir -p ~/cycloshop && cd ~/cycloshop
sqlite3 cycloshop.db <<'SQL'
CREATE TABLE clients(id INTEGER PRIMARY KEY, prenom TEXT, nom TEXT, email TEXT, adresse TEXT, date_inscription TEXT, newsletter INTEGER);
CREATE TABLE commandes(id INTEGER PRIMARY KEY, client_id INTEGER, date TEXT, montant REAL);
INSERT INTO clients VALUES
(1,'Camille','Roux','camille.roux@example.com','12 rue des Lilas, 59000 Lille','2022-03-14',1),
(2,'Nadir','Benali','nadir.benali@example.org','5 avenue Foch, 69006 Lyon','2023-01-09',0),
(3,'Inès','Fabre','ines.fabre@example.net','8 place du Marché, 35000 Rennes','2021-11-30',1);
INSERT INTO commandes VALUES
(1,1,'2022-03-14',129.90),(2,1,'2023-06-02',89.50),(3,1,'2024-02-20',627.60),
(4,2,'2023-01-09',45.00),(5,3,'2022-05-18',210.00);
SQL
A2. Répondre à la demande d'accès
J'anticipe. Avant d'écrire la requête : une requête SELECT * FROM clients; suffirait-elle pour répondre à Camille ? ______________________
Éléments de réponse
Non. Elle renverrait aussi les données de Nadir et d'Inès : ce serait une violation de confidentialité. Il faut filtrer sur la seule personne concernée, et penser aux commandes, qui sont aussi des données qui la concernent.
Extrais les données de Camille :
sqlite3 -header -csv cycloshop.db "SELECT * FROM clients WHERE email='camille.roux@example.com';"
sqlite3 -header -csv cycloshop.db "SELECT c.id, c.date, c.montant FROM commandes c JOIN clients p ON p.id=c.client_id WHERE p.email='camille.roux@example.com';"
sqlite3 -json cycloshop.db "SELECT * FROM clients WHERE email='camille.roux@example.com';"
sqlite3 cycloshop.db "SELECT COUNT(*), SUM(montant) FROM commandes WHERE client_id=1;"
Je comprends.
| Élément | Rôle |
|---|---|
-header -csv |
Sortie CSV avec la ligne d'en-têtes, lisible dans un tableur |
-json |
Sortie JSON : format structuré, lisible par une machine (utile pour la portabilité) |
WHERE email='…' |
Filtre : on ne sort que les données de la personne |
JOIN … ON p.id=c.client_id |
Relie chaque commande à son client |
COUNT(*), SUM(montant) |
Nombre de commandes et total |
Questions.
- Combien de commandes Camille a-t-elle passées, pour quel total ? ______________________
- Avant d'envoyer ces données, que doit-on vérifier ? Comment ? ______________________
- Comment transmettre la réponse de façon sécurisée (pas en pièce jointe en clair vers n'importe quelle adresse) ? ______________________
- Dans quel délai faut-il répondre ? ______________________
- Dans une vraie entreprise, dans quels autres endroits que cette base faudrait-il chercher ? ______________________
A3. Traiter la demande d'effacement
L'entreprise doit conserver ses pièces comptables (factures) pendant la durée légale : on ne peut donc pas supprimer les commandes. On anonymise le client.
J'anticipe. Que se passe-t-il si tu supprimes la ligne de Camille dans clients mais que tu laisses ses commandes ? ______________________
Éléments de réponse
Les commandes pointent vers un client_id qui n'existe plus : la base devient incohérente. La bonne démarche est d'anonymiser les données directement identifiantes en conservant la ligne.
Fais d'abord une copie de sécurité, puis anonymise :
cp cycloshop.db cycloshop-avant.db
sqlite3 cycloshop.db "UPDATE clients SET prenom='ANONYME', nom='ANONYME', email=NULL, adresse=NULL, newsletter=0 WHERE id=1;"
sqlite3 -header -csv cycloshop.db "SELECT * FROM clients;"
sqlite3 -header -csv cycloshop.db "SELECT * FROM commandes WHERE client_id=1;"
Questions.
- Que reste-t-il de Camille dans
clients? Les commandes sont-elles toujours présentes ? Pourquoi les conserver ? ______________________ - La copie de sécurité
cycloshop-avant.dbcontient encore les données de Camille. Pourquoi est-ce un problème pour l'effacement ? Que faut-il prévoir ? ______________________ - Supprimer
cycloshop-avant.dbsuffit-il si le serveur est sauvegardé chaque nuit (voir S05) ? ______________________ - Que réponds-tu à Camille au sujet de l'effacement ? Rédige deux phrases. ______________________
Note
L'anonymisation est ici très simple. Une vraie anonymisation (qui rend la ré-identification impossible) est plus exigeante : tant qu'on peut retrouver la personne par recoupement, la donnée reste personnelle. Voir la notion de pseudonymisation en S08.
Partie B. Mentions d'information et consentement (30 min)
CycloShop veut ajouter au formulaire d'inscription une case pour recevoir la newsletter. Voici la version actuelle :
☑ J'accepte de recevoir les offres de CycloShop et de ses partenaires. (case cochée par défaut) En continuant, vous acceptez nos conditions générales.
- Cite au moins trois défauts de cette formulation au regard d'un consentement valide. ______________________
- Propose une version conforme de la case. ______________________
- Rédige les mentions d'information (4 à 6 lignes) du formulaire d'inscription : responsable, finalités, base légale, destinataires, durée, droits, contact, droit de saisir la CNIL. ______________________
Tip
La newsletter repose sur le consentement. L'inscription au compte client et la livraison reposent sur l'exécution du contrat. Ce sont deux finalités distinctes : le consentement ne porte que sur la newsletter.
Partie C. Analyser une bannière de cookies (40 min)
Choisis, avec ton binôme, deux sites publics de ton choix (un site de presse et un site marchand, par exemple).
- Ouvre une fenêtre de navigation privée.
- Ouvre les outils de développement (touche F12), onglet Application (ou Stockage selon le navigateur), rubrique Cookies.
- Va sur le site sans cliquer sur la bannière et note les cookies déjà déposés.
- Clique sur Tout refuser (ou équivalent), recharge la page et note les cookies.
- Dans une nouvelle fenêtre privée, recommence en cliquant sur Tout accepter et note les cookies.
J'anticipe. Sur un site conforme, combien de cookies de mesure d'audience ou de publicité attends-tu avant tout clic ? ______________________
Éléments de réponse
Aucun : seuls des cookies strictement nécessaires peuvent déjà être présents. Le consentement doit être recueilli avant le dépôt.
Remplis, pour chaque site, la grille :
| Critère | Site 1 | Site 2 |
|---|---|---|
| Bouton « Refuser » aussi visible que « Accepter » (même niveau, même écran) ? | ||
| Cookies déposés avant tout clic (noms, domaines) | ||
| Cookies après « refuser » | ||
| Cookies après « accepter » (domaines tiers ?) | ||
| Texte d'information clair (finalités, partenaires) ? | ||
| Possibilité de retirer son choix facilement ? | ||
| Ton avis : conforme, à améliorer, non conforme ? |
Questions.
- Quels cookies identifies-tu comme tiers ? À quoi servent-ils, d'après le nom du domaine ? ______________________
- Un cookie déposé avant tout clic est-il forcément une infraction ? De quoi dépend la réponse ? ______________________
- Pourquoi ton analyse est-elle une observation et pas une preuve de non-conformité ? ______________________
Retour en entreprise
Si ta situation le permet : observe comment ton entreprise traite ce sujet, note en quelques lignes l'écart avec le TP, et, avec l'accord de ton tuteur, réalise une partie sur une situation réelle. Anonymise tes captures. Voir Transfert en entreprise.
Bilan de la séance
Remplis ce bilan seul, honnêtement : il sert à décider ce qu'il faut reprendre. Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise (le vocabulaire des grilles nationales d'évaluation) ; Non évalué si tu n'as pas travaillé la compétence aujourd'hui.
| Compétence du référentiel | Ce que j'ai fait dans cette séance | Niveau |
|---|---|---|
| B3.1 – Protéger les données à caractère personnel |
Note
Les codes sont ceux du référentiel (l'arrêté numérote des activités : les codes « B… » sont un usage courant).
Je sais faire, sans aide :
- Associer une base légale à un traitement ;
- Reconnaître un consentement non valide ;
- Rédiger une mention d'information claire et complète ;
- Extraire les données d'une personne sans divulguer celles des autres ;
- Traiter une demande d'effacement en tenant compte des obligations de conservation ;
- Analyser les cookies déposés par un site avant et après le choix de l'utilisateur.
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________