Java, authentification, tests unitaires, fusion de bases, RGPD, triggers SQL, sécurité web et logs de connexion.
Le sujet Yak est un cas SLAM très complet : il combine du développement Java, de la logique de tests unitaires, de la conformité RGPD et de la sécurité des données. Pour réussir, il faut éviter les réponses trop générales et montrer que chaque proposition répond à un besoin précis de l’agence de voyage.
Yak est une agence de voyage confrontée à plusieurs enjeux : fiabiliser l’authentification, encadrer la fusion de deux bases de données clients et repérer les comportements suspects dans les journaux de connexion. Le sujet évalue donc à la fois la rigueur du développeur et la capacité à raisonner sur la protection des données.
Le sujet ne demande pas seulement d’écrire du code. Il faut expliquer pourquoi ce code est fiable, pourquoi certaines données doivent être conservées ou supprimées, et comment les traces techniques permettent d’identifier une attaque. Une bonne copie relie donc systématiquement la solution technique à son intérêt métier et juridique.
Le correcteur attend des réponses structurées. En Java, il faut citer les règles exactes du mot de passe et montrer le rôle de verifierMdp() et ancienMdp(). En RGPD, il faut distinguer clairement une donnée personnelle d’une donnée sensible. En SQL, il faut utiliser une syntaxe complète et justifier le contrôle effectué par le trigger.
| Bloc | Compétence attendue | Erreur à éviter |
|---|---|---|
| Authentification Java | Comprendre les règles de complexité et modifier le mot de passe proprement | Oublier l’historique des anciens mots de passe |
| Tests unitaires | Tester le cas nominal et les cas d’échec | Ne tester que le scénario qui fonctionne |
| RGPD | Appliquer minimisation, consentement et distinction des données | Confondre donnée personnelle et donnée sensible |
| SQL | Créer un trigger de contrôle cohérent | Produire du SQL incomplet ou non justifié |
verifierMdp() et ancienMdp().Le point important est de ne pas réinventer toute la classe. Il faut utiliser les méthodes existantes et respecter la logique métier déjà définie dans les documents.
Une bonne réponse teste plusieurs chemins d’exécution. Pour modifierMdp(), il faut vérifier qu’un mot de passe valide est accepté, qu’un mot de passe trop simple est refusé et qu’un ancien mot de passe ne peut pas être réutilisé.
@Test
void verifModifierMdp() {
assertTrue(unUtilisateur.modifierMdp("Nouveau1234@Mdp"));
assertFalse(unUtilisateur.modifierMdp("simple"));
assertFalse(unUtilisateur.modifierMdp("M1ue@uiT455n"));
}
La notion clé est la minimisation : Yak ne doit conserver que les informations utiles à la gestion des voyages et de la relation client.
Le trigger doit traduire une règle métier vérifiable avant ou après l’insertion. La réponse doit préciser le moment du déclenchement, la table concernée, la condition de blocage et le message d’erreur.
CREATE TRIGGER verif_age_client
BEFORE INSERT ON Client
FOR EACH ROW
BEGIN
IF TIMESTAMPDIFF(YEAR, NEW.dateNaissance, CURDATE()) < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Client mineur interdit';
END IF;
END;
Yak est un sujet exigeant car il oblige à passer rapidement d’un raisonnement de développeur à un raisonnement juridique et sécurité. La difficulté ne vient pas d’un seul algorithme complexe, mais de la précision attendue dans chaque domaine.
“La méthode doit refuser la modification si le nouveau mot de passe ne respecte pas les règles de complexité ou s’il figure déjà dans l’historique. Si les deux conditions sont satisfaites, l’ancien mot de passe est ajouté à la liste des anciens mots de passe avec la date du jour, puis le nouveau mot de passe est enregistré.”
“Le test doit vérifier un cas accepté et au moins deux cas refusés. Cela permet de prouver que la méthode fonctionne dans le scénario normal mais aussi qu’elle bloque correctement les mots de passe trop faibles et les mots de passe déjà utilisés.”
“Le nom, le prénom, l’adresse postale, l’email et le numéro de téléphone sont des données personnelles car ils permettent d’identifier directement ou indirectement un client. Une information relative à la santé, au handicap ou à des restrictions médicales serait une donnée sensible et nécessiterait un niveau de protection renforcé.”
“Lors de la fusion, Yak ne doit pas conserver les colonnes qui ne servent pas à la réservation, à la facturation ou à la relation client. Une colonne comme la profession peut être supprimée si elle n’est pas nécessaire à la finalité du traitement.”
“Plusieurs échecs de connexion très rapprochés sur le même compte constituent un indice d’attaque automatisée par force brute. L’administrateur doit bloquer temporairement le compte, vérifier l’origine des tentatives et imposer une réinitialisation du mot de passe.”
Il ne faut pas appliquer une règle générale sans lire le document fourni. Le sujet précise ses propres conventions de nommage. Une variable de boucle courte peut être acceptable, alors qu’un paramètre de méthode doit avoir un nom explicite.
La modification du mot de passe ne se limite pas à affecter une nouvelle valeur. Il faut conserver l’ancien mot de passe dans l’historique pour empêcher sa réutilisation ultérieure.
Un test unitaire qui ne vérifie que le cas nominal est incomplet. Les cas de refus sont essentiels pour prouver que les règles de sécurité sont réellement appliquées.
Toutes les données sensibles sont personnelles, mais toutes les données personnelles ne sont pas sensibles. Le nom, le téléphone ou l’email identifient une personne, mais ne relèvent pas de l’article 9 du RGPD.
Un trigger de contrôle doit expliquer pourquoi l’opération est bloquée. Un SIGNAL SQLSTATE avec un message clair permet à l’application de remonter une erreur compréhensible.
Une très bonne copie utilise un vocabulaire précis : test unitaire, cas nominal, cas d’erreur, minimisation, donnée personnelle, donnée sensible, trigger, force brute. Elle ne se contente pas de dire “sécuriser” : elle explique la règle, le risque et la correction.
Le sujet porte sur l’authentification Java, les tests unitaires, la fusion de bases, le RGPD, les triggers SQL et l’analyse de logs.
Il faut respecter les règles de complexité du mot de passe, gérer l’historique et produire des tests unitaires qui couvrent aussi les cas refusés.
La fusion peut entraîner la conservation de données inutiles ou redondantes. Le principe de minimisation impose de supprimer ce qui n’est pas nécessaire à la finalité du traitement.
Les données sensibles sont une catégorie particulière de données personnelles, par exemple les données de santé ou les opinions politiques. Elles nécessitent une protection renforcée et souvent un consentement explicite.
Des tentatives de connexion nombreuses et très rapprochées sur un même compte révèlent probablement un script de force brute ou une tentative automatisée.
Sujet complet BTS SIO 2023 SLAM Yak pour travailler l’épreuve.
📄 Sujet complet PDFRetrouvez les autres sujets BTS SIO disponibles pour compléter vos révisions.