Le bon de livraison
Le livreur a besoin du nom, de l'adresse et d'un numéro pour appeler. Il n'a pas besoin du numéro de CIN ni de l'historique des achats. On imprime seulement ce qui lui sert.
Les règles concrètes de protection des données utilisateurs dans le code - ne renvoyer que les champs utiles, masquer, pseudonymiser, ne jamais journaliser de secrets, limiter la conservation - et ce que l'obfuscation du code source protège... ou ne protège pas.
La loi dit quoi protéger ; le code dit comment. Une API qui renvoie un SELECT * entier, un fichier journal qui garde les mots de passe tapés, un numéro de téléphone affiché en clair sur un bon de livraison : ce sont les fuites les plus fréquentes, et elles se corrigent en quelques lignes.
Dans la base, la ligne d'une cliente contient tout : nom, téléphone, CIN, hachage du mot de passe.
Les règles qui reviennent dans tous les projets :
06******78, **** 4821.// avant
function prixTTC(prix) { return prix * 1.2; }
// après obfuscation (exemple)
var _0x1a=function(_0x2b){return _0x2b*0x6/0x5;};
L’obfuscation protège un peu la propriété intellectuelle (rendre la copie d’un algorithme plus coûteuse). Elle ne protège pas un secret : le navigateur doit exécuter le code, donc on peut toujours l’observer, le dérouler et lire ce qu’il envoie dans l’onglet Réseau.
Le livreur a besoin du nom, de l'adresse et d'un numéro pour appeler. Il n'a pas besoin du numéro de CIN ni de l'historique des achats. On imprime seulement ce qui lui sert.
Sur le ticket de caisse, le numéro de carte apparaît sous la forme **** **** **** 4821 : assez pour que le client reconnaisse sa carte, trop peu pour qu'un voleur s'en serve. C'est le masquage.
La page s'affichera ici.
Le navigateur demandera /api/client.php?id=1 au serveur, qui exécutera le PHP et renverra du HTML.
Consignes 0 / 3
Écrivez masquerEmail('amina.benali@mail.ma') qui renvoie 'a***********@mail.ma' (première lettre, des étoiles, puis le domaine).
<?php function masquerEmail(string $email): string { [$nom, $domaine] = explode('@', $email, 2) + [1 => '']; return mb_substr($nom, 0, 1) . str_repeat('*', max(mb_strlen($nom) - 1, 0)) . '@' . $domaine; } echo masquerEmail('amina.benali@mail.ma'); // a***********@mail.ma
Les comptes sans aucune commande depuis 3 ans doivent être anonymisés (prénom « Ancien », nom « client », e-mail et téléphone vidés). Écrivez la requête SQL.
UPDATE clients SET prenom = 'Ancien', nom = 'client', email = NULL WHERE date_inscription < CURDATE() - INTERVAL 3 YEAR AND id NOT IN ( SELECT client_id FROM commandes WHERE date_commande >= CURDATE() - INTERVAL 3 YEAR );