BTS SIO 2023 SLAM – Yak
Analyse détaillée et méthodologie complète

Java, authentification, tests unitaires, fusion de bases, RGPD, triggers SQL, sécurité web et logs de connexion.

SLAMSession 2023JavaRGPDSQLTests unitaires

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.

Plan de l’analyse

1. Analyse du cas Yak : comprendre le sujet avant de coder

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.

La grille d’analyse en 4 dimensions

  • Application : méthode Java de modification du mot de passe, règles de complexité, historique des anciens mots de passe.
  • Qualité logicielle : tests unitaires JUnit, cas nominal, cas d’erreur, assertions explicites.
  • Données : fusion de bases, suppression des colonnes inutiles, contrôle d’intégrité avec trigger SQL.
  • Sécurité et RGPD : distinction données personnelles / sensibles, minimisation, consentement, logs et détection d’attaque.

Le vrai fil conducteur du sujet

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.

Ce que le correcteur veut voir

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.

Les blocs techniques du sujet

BlocCompétence attendueErreur à éviter
Authentification JavaComprendre les règles de complexité et modifier le mot de passe proprementOublier l’historique des anciens mots de passe
Tests unitairesTester le cas nominal et les cas d’échecNe tester que le scénario qui fonctionne
RGPDAppliquer minimisation, consentement et distinction des donnéesConfondre donnée personnelle et donnée sensible
SQLCréer un trigger de contrôle cohérentProduire du SQL incomplet ou non justifié

2. Méthodologies : comment structurer les réponses

Méthode pour la partie Java

  1. Repérer les règles exactes imposées au mot de passe dans le code fourni.
  2. Identifier les méthodes déjà disponibles : verifierMdp() et ancienMdp().
  3. Construire une condition logique claire : mot de passe conforme ET jamais utilisé.
  4. Ajouter l’ancien mot de passe dans l’historique avant d’affecter le nouveau.
  5. Retourner un booléen indiquant si la modification a réellement été effectuée.

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.

Méthode pour les tests unitaires JUnit

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"));
}

Méthode pour une question RGPD

  1. Identifier la donnée concernée : nom, email, téléphone, date de naissance, donnée de santé éventuelle.
  2. Dire si elle est personnelle ou sensible.
  3. Relier la donnée à une finalité précise : vente de voyages, facturation, suivi client.
  4. Supprimer ou pseudonymiser ce qui n’est pas strictement nécessaire.

La notion clé est la minimisation : Yak ne doit conserver que les informations utiles à la gestion des voyages et de la relation client.

Méthode pour un trigger SQL

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;

Niveau de difficulté : complet et transversal

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.

3. Exemples modèles 📗 : ce qu’une excellente réponse peut donner

Exemple modèle 1 : expliquer la méthode modifierMdp

“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é.”

Exemple modèle 2 : test unitaire complet

“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.”

Exemple modèle 3 : distinction RGPD

“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é.”

Exemple modèle 4 : principe de minimisation

“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.”

Exemple modèle 5 : analyse des logs

“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.”

4. Pièges à éviter ⚠️ : les erreurs qui coûtent des points

Piège 1 : ne pas respecter les conventions Java du sujet

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.

Piège 2 : oublier l’ancien mot de passe

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.

Piège 3 : tester seulement le cas qui réussit

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.

Piège 4 : confondre données personnelles et données sensibles

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.

Piège 5 : écrire un trigger sans message d’erreur

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.

Stratégie pour viser 15/20 ou plus

Plan d’attaque pendant l’épreuve

  1. Commencer par le dossier Java : repérer les méthodes existantes et les règles de complexité.
  2. Structurer les tests : un cas valide, un cas trop simple, un cas déjà utilisé.
  3. Traiter le RGPD avec méthode : type de donnée, finalité, minimisation, justification.
  4. Écrire le SQL proprement : trigger complet, condition claire, message d’erreur explicite.
  5. Terminer par les logs : repérer les anomalies temporelles et proposer une réponse opérationnelle.

La copie qui dépasse 15/20

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.

FAQ – Sujet Yak BTS SIO 2023 SLAM

Quel est le thème principal du sujet Yak ?

Le sujet porte sur l’authentification Java, les tests unitaires, la fusion de bases, le RGPD, les triggers SQL et l’analyse de logs.

Quelle est la difficulté principale de la partie Java ?

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.

Pourquoi la fusion des bases pose-t-elle un problème RGPD ?

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.

Que faut-il écrire sur les données sensibles ?

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.

Comment reconnaître une attaque dans les logs ?

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.

📥 Télécharger le document officiel

Sujet complet BTS SIO 2023 SLAM Yak pour travailler l’épreuve.

📄 Sujet complet PDF

📚 Autres sujets SIO

Retrouvez les autres sujets BTS SIO disponibles pour compléter vos révisions.