Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1416 minIntermédiaire

Réviser l'E7 : calendrier, erreurs et fiches réflexes

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • planifier tes révisions sur la 2e année et la dernière semaine ;
  • éviter les erreurs qui coûtent le plus de points ;
  • retrouver la syntaxe SQL de sécurité et les parades aux failles courantes ;
  • vérifier la veille que les notions clés te viennent sans hésiter.

1 exercice corrigé

Réviser l'E7 SLAM, c'est combiner trois choses sur la 2e année : les notions des cinq compétences du bloc 3, la pratique sur les annales, et la méthode de l'écrit en 4 heures. Ce chapitre donne un calendrier de révision, de la rentrée de 2e année au jour de l'épreuve, la liste des erreurs qui font perdre le plus de points, avec le réflexe qui les évite, puis sept fiches réflexes à relire la dernière semaine et la veille.

Le calendrier de la 2e année

L'épreuve a lieu en mai, à la date fixée par le calendrier national de la session ; ta convocation te donne le jour, l'heure et le lieu. Les sujets de métropole 2025 et 2026 ont tous deux été passés et publiés en mai.

PériodeObjectifActions concrètes
Septembre et octobreconnaître l'épreuvelire ce cours en entier ; télécharger les annales ; lire deux sujets sans les traiter
Novembre à janvierconsolider les notionsun thème par semaine : risques et RGPD, habilitations et SQL, code à sécuriser, API, journalisation et tests ; les questions des annales correspondantes, cours ouvert
Février et marspasser à l'écrit chronométréun dossier d'annale par semaine, en temps limité (2,6 minutes par point), sans document ; correction systématique
Avrils'entraîner en conditions réellesles deux épreuves blanches de ce cours, en 4 heures, puis un sujet complet de métropole
Les deux dernières semainesréviser sans apprendre de nouveaules fiches réflexes de ce chapitre, le glossaire E7 SLAM, les erreurs ci-dessous

La dernière semaine

  • Un sujet complet traité en 4 heures, le plus récent si possible, puis corrigé avec soin.
  • Les fiches réflexes relues deux fois, à voix haute pour les définitions.
  • Les dix catégories de l'OWASP Top 10 2021 récitées dans l'ordre, avec un exemple chacune.
  • Les articles 32, 33 et 34 du RGPD et les peines de l'article 323-1 du Code pénal sus par cœur.
  • La syntaxe de GRANT, REVOKE, RENAME USER, CREATE VIEW, d'un déclencheur et d'une requête avec GROUP BY et HAVING écrite une fois de mémoire.

La veille et le jour de l'épreuve

  • Deux stylos noirs ou bleus, un crayon, une gomme, une règle, ta convocation et ta pièce d'identité. Ni calculatrice ni document.
  • Une montre si la salle n'a pas d'horloge visible : ton plan de temps repose sur des heures de fin.
  • Dès que tu reçois le sujet : vérifier qu'il est complet (le nombre de pages est indiqué en première page), lire le barème, écrire tes heures de fin.

Les erreurs qui coûtent des points

MomentErreurCe qu'elle coûteLe réflexe
Lecturerépondre sans avoir lu le contexte ni survolé les documentsdes réponses génériques, des noms de tables faux20 minutes de lecture et de plan avant la première réponse
Lectureignorer le paragraphe qui précède une questionl'information clé (« seulement depuis le serveur local ») manque à la réponsesouligner les contraintes dans chaque paragraphe de mission
Gestion du tempspasser une heure sur une question difficileun dossier entier non traité en fin d'épreuveheures de fin écrites et respectées ; revenir plus tard
Gestion du tempslaisser une question videtous ses pointsune phrase qui nomme la notion vaut toujours mieux qu'un blanc
Rédactionrépondre « il faut sécuriser » sans nommer ni expliquerla quasi-totalité des points de la questionnommer, expliquer, appliquer au cas
Rédactionune justification sans lien avec le casla moitié des pointsciter l'organisation, la donnée, le document
Rédactionconfondre « Citer » et « Justifier »du temps perdu, ou des points perduslire le verbe avant d'écrire
Droit« il faut informer les personnes concernées » pour toute violationla réponse est fausse si le risque n'est pas élevédocumenter toujours, CNIL s'il y a un risque, personnes si le risque est élevé
Droitconfondre chiffrement et hachageune réponse fausse sur les mots de passe ou les IBANhacher ce qu'on vérifie, chiffrer ce qu'on relit
SQLune condition sur COUNT dans le WHEREla requête ne s'exécute pasWHERE filtre les lignes, HAVING filtre les groupes
SQLGRANT ALL pour corriger des droitsla faille reste entièrelister les privilèges nécessaires, rien de plus
SQLoublier l'hôte du compte ('appli'@'localhost')la requête vise un autre compte, ou aucuntoujours écrire nom et hôte
Coderecopier tout le code au lieu des lignes modifiéesdu temps perdu, une correction difficile à trouvernuméro de ligne et ligne complète, rien d'autre
Code== pour comparer deux chaînes en Javaune méthode qui ne marche pasequals
Codereturn false dans le else d'une boucle de recherchela méthode ne regarde que le premier élémentle return false après la boucle
Code« utiliser une requête préparée » face à un prepare() sur une requête concaténéela cause réelle n'est pas identifiéevérifier que les valeurs sont liées à des marqueurs
Codecontrôler les droits côté client (bouton masqué)la faille n'est pas corrigéevérifier sur le serveur, à chaque requête, avec l'identité de la session ou du jeton
APIrenvoyer 401 à un utilisateur authentifié mais non autoriséune réponse fausse401 : qui es-tu ? 403 : tu n'as pas le droit
Relecturedes numéros de question absents ou fauxdes réponses que le correcteur ne trouve pasun numéro par réponse, un dossier par page

Les fiches réflexes

Ces sept fiches résument chacune ce qu'il faut savoir sans hésiter le jour de l'E7 SLAM : la méthode, les notions juridiques, la syntaxe SQL de sécurité, les failles et leurs parades, l'authentification, la journalisation. Elles se relisent la dernière semaine et la veille. Chaque fiche renvoie au chapitre qui détaille la notion ; pour les définitions des termes, utilise aussi le glossaire E7 SLAM.

Fiche 1 : la méthode de l'épreuve

  • Format : 4 heures, coefficient 4, sans document ni calculatrice, 80 points en deux à quatre dossiers, sujet propre à SLAM.
  • Temps : 15 min de lecture, 5 min de plan, environ 2,6 minutes par point, 15 min de relecture. Des heures de fin écrites et respectées.
  • Ordre : le dossier le plus sûr d'abord, jamais le plus gros en dernier.
  • Réponse : nommer, expliquer, appliquer au cas ; corriger si on te le demande.
  • Code : seulement les lignes modifiées, avec leur numéro.
  • Documentation du sujet : l'utiliser telle quelle, même si elle diffère de ce que tu connais.
  • Détails : lire le sujet, rédiger une réponse.

Fiche 2 : risques

NotionÀ retenir
DICPdisponibilité, intégrité, confidentialité, preuve (traçabilité, non-répudiation)
Justifier un niveauquelle donnée ou action, quelle conséquence d'une atteinte, pour qui
Scénario de risquesource de risque, vulnérabilité, événement redouté, impacts
Rançongicielsauvegardes déconnectées et testées, mises à jour, MFA, cloisonnement, moindre privilège, EDR, sensibilisation
Hameçonnageexpéditeur imité, lien trompeur, urgence, demande inhabituelle, fautes ; parades : filtrage, MFA, sensibilisation
Sauvegarderègle 3-2-1, une copie déconnectée ou immuable, restaurations testées ; le RAID n'est pas une sauvegarde
Archivageconservation longue de données figées (preuve, obligation légale), confidentialité et intégrité vérifiées (chiffrement, empreinte)
PCA et PRAcontinuer pendant l'incident ; redémarrer après ; DMIA (durée d'interruption) et PDMA (perte de données) admissibles

Fiche 3 : RGPD et droit

TexteÀ retenir
RGPD art. 4donnée personnelle : toute information sur une personne physique identifiée ou identifiable, directement ou indirectement
RGPD art. 9données sensibles : origine, opinions, religion, syndicat, génétique, biométrie d'identification, santé, vie et orientation sexuelles
RGPD art. 25protection des données dès la conception et par défaut
RGPD art. 32sécurité adaptée au risque ; chiffrement et pseudonymisation « selon les besoins »
Pseudonymisationdonnée encore personnelle, le RGPD s'applique ; anonymisation : réidentification impossible, le RGPD ne s'applique plus
RGPD art. 33violation : documenter toujours ; notifier la CNIL si risque, dans les meilleurs délais et si possible sous 72 h ; le sous-traitant prévient le responsable
RGPD art. 34informer les personnes si le risque est élevé
RGPD art. 35AIPD avant un traitement à risque élevé
RGPD art. 83jusqu'à 20 M€ ou 4 % du chiffre d'affaires mondial
Code pénal 323-1accès ou maintien frauduleux : 3 ans et 100 000 € ; 5 ans et 150 000 € si données supprimées ou modifiées
Code pénal 323-2 et 323-3entrave au fonctionnement ; introduction, extraction, modification de données : 5 ans et 150 000 €
Code civil 1366l'écrit électronique vaut l'écrit papier si l'auteur est identifié et l'intégrité garantie
Charte informatiqueopposable si annexée au règlement intérieur (avis du CSE, inspection du travail, dépôt, affichage)
Données de santéhébergement par un hébergeur certifié HDS (Code de la santé publique, art. L1111-8)

Détails : analyse de risques et RGPD.

Fiche 4 : SQL de sécurité (MySQL 8.4)

sql
-- Comptes et privilèges
CREATE USER 'appli'@'localhost' IDENTIFIED BY 'mdp';
RENAME USER 'appli'@'%' TO 'appli'@'localhost';           -- les privilèges suivent
GRANT SELECT, INSERT, UPDATE, DELETE ON base.* TO 'appli'@'localhost';
REVOKE ALL PRIVILEGES ON base.* FROM 'appli'@'localhost';  -- même niveau que le GRANT
ALTER USER 'appli'@'localhost' IDENTIFIED BY 'nouveau';
SHOW GRANTS FOR 'appli'@'localhost';

-- Vue qui restreint les colonnes
CREATE VIEW v_public AS SELECT id, nom FROM Client;
GRANT SELECT ON base.v_public TO 'lecteur'@'localhost';

-- Déclencheur de contrôle
CREATE TRIGGER t BEFORE INSERT ON T FOR EACH ROW
BEGIN
  IF NEW.x < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'refusé'; END IF;
  -- modifier la ligne : SET NEW.statut = '…';  (jamais d'UPDATE sur T)
END;

-- Chiffrement d'une colonne
ALTER TABLE T MODIFY col VARBINARY(200);
UPDATE T SET col = AES_ENCRYPT(col, 'cle');
SELECT CAST(AES_DECRYPT(col, 'cle') AS CHAR) AS col FROM T;

-- Audit
SELECT idUtilisateur, COUNT(*) AS nb FROM Log
WHERE operation = 'delete' GROUP BY idUtilisateur HAVING COUNT(*) > 5;

-- Transaction : tout ou rien (PDO : beginTransaction, commit, rollBack)
START TRANSACTION;
UPDATE Utilisateur SET idRole = 3 WHERE id = 42;
INSERT INTO HistoHabilitation (idUtilisateur, nouveauRole) VALUES (42, 3);
COMMIT;   -- ou ROLLBACK;

Détails : habilitations et SQL.

Fiche 5 : failles et parades

Faille (OWASP 2021)Signe dans le codeParade
Contrôle d'accès défaillant (A01)un identifiant venu de l'URL ou d'un champ caché, sans vérification d'appartenancevérifier côté serveur, à chaque requête, avec l'identité de la session ou du jeton ; WHERE id = :id AND idClient = :idClient
Défaillance cryptographique (A02)md5(), sha1(), hash('sha256', …) sur un mot de passe ; mot de passe en clairpassword_hash() et password_verify() (bcrypt, Argon2) ; HTTPS
Injection SQL (A03)une variable dans le texte de la requêterequête préparée avec marqueurs liés ; compte aux droits minimaux
XSS (A03)echo $saisiehtmlspecialchars($x, ENT_QUOTES, 'UTF-8') ; CSP ; cookie HttpOnly
CSRFformulaire sensible sans jeton, action par GETjeton anti-CSRF vérifié avec hash_equals ; SameSite ; POST
Mauvaise configuration (A05)message d'erreur détaillé, commentaire HTML technique, mot de passe dans le codemessage générique, secrets en variables d'environnement
Composants obsolètes (A06)dépendance jamais mise à jourinventaire, composer audit, npm audit, mises à jour
Authentification faible (A07)jwt.decode, jeton sans expiration, essais illimitésjwt.verify, expiration courte, limitation des tentatives, MFA
Réinitialisation faible (A07)mot de passe envoyé par courriel, code court, lien sans expirationlien HTTPS avec un jeton random_bytes, empreinte stockée, usage unique, expiration de 24 h au plus, message générique
Journalisation insuffisante (A09)aucune trace des actions sensiblestraces CNIL, alertes

Détails : sécuriser du code.

Fiche 6 : API et authentification

  • Codes : 200, 201 (créé), 204 (supprimé), 400, 401 (non authentifié), 403 (non autorisé), 404, 405 (méthode refusée), 429, 500.
  • Méthodes dangereuses : PUT, PATCH, DELETE, contrôle d'autorisation obligatoire dans l'API.
  • Clé d'API : identifie une application partenaire, longue durée, jamais transmise à un utilisateur final.
  • Jeton d'accès : identifie un utilisateur, courte durée ; jeton de rafraîchissement : renouvelle le jeton d'accès.
  • JWT : en-tête, charge utile lisible (pas chiffrée), signature ; toujours vérifier signature, algorithme et expiration.
  • HTTPS : confidentialité, intégrité, authentification du serveur ; TLS 1.2 minimum.
  • MFA : deux facteurs de natures différentes (savoir, posséder, être).
  • SSO : OpenID Connect sur OAuth 2.0 ; un compte à protéger par MFA.
  • Transfert de fichier : SFTP ou plateforme HTTPS authentifiée, lien qui expire, fichier chiffré (GPG), empreinte ou signature vérifiée à l'arrivée.

Détails : API et authentification.

Fiche 7 : journalisation et tests

  • Une trace : auteur individuellement identifié, horodatage, nature de l'opération, référence des données ; adresse IP ou équipement. Jamais de mot de passe, pas de copie des données.
  • Protection : stockage séparé, écriture seule, horodatage et signature, accès restreint.
  • Durée : entre six mois et un an dans le cas général (CNIL, délibération n° 2021-122).
  • Exploitation : analyse automatique et alertes ; utilisateurs informés.
  • Signatures d'attaque : 401 en rafale (force brute), identifiants qui se suivent (énumération), 404 en série (balayage), apostrophes et UNION (injection).
  • Tests : unitaires (assertTrue, assertFalse, assertEquals), cas autorisé, cas refusé, cas limites ; non-régression ; test d'intrusion autorisé ; analyse statique et dynamique ; audit de code.

Détails : journalisation et tests.

Pour aller plus loin

Les notions de ces fiches s'appuient sur d'autres cours du site : SQL, Procédures stockées et triggers, Sécurité applicative, Droit du numérique et RGPD, Analyse de risques, Authentification et habilitations, Cryptographie, Journalisation et réponse à incident, PHP et MySQL, Programmation orientée objet et Tests. Pour les dernières heures, le récapitulatif Quoi réviser pour l'E7 SLAM classe les priorités.

Exercice

Exercice Corriger une copie Réussi À revoir

Voici la copie d'un candidat sur trois questions. Repère toutes les erreurs et réécris chaque réponse.

  1. Question : « Écrire la requête donnant, pour chaque utilisateur ayant réalisé plus de 10 suppressions dans la journée, le nombre de suppressions. » Réponse : SELECT idUtilisateur, COUNT(*) FROM Log WHERE operation = 'delete' AND COUNT(*) > 10 AND DATE(dateHeure) = CURDATE();
  2. Question : « La violation présente un risque élevé pour les personnes. Indiquer les obligations du responsable de traitement. » Réponse : « Il doit prévenir la police sous 24 heures. »
  3. Question : « Le compte appli ne doit que lire la table produit, depuis le serveur local. Écrire la requête. » Réponse : GRANT ALL ON boutique.produit TO appli;
Voir la réponseMasquer la réponse de l'exercice
  1. Erreurs : condition sur COUNT(*) dans le WHERE (refusée par le SGBD), absence de GROUP BY, colonne du compte sans alias. Correction :
    sql
    SELECT idUtilisateur, COUNT(*) AS nbSuppressions
    FROM Log
    WHERE operation = 'delete' AND DATE(dateHeure) = CURDATE()
    GROUP BY idUtilisateur
    HAVING COUNT(*) > 10;
    
  2. Erreurs : la police n'est pas l'autorité à notifier, le délai est faux, l'information des personnes est oubliée alors que le risque est élevé. Correction : « Le responsable de traitement documente la violation dans son registre (article 33, paragraphe 5, du RGPD), la notifie à la CNIL dans les meilleurs délais et, si possible, 72 heures au plus tard après en avoir pris connaissance (article 33), et, le risque étant élevé, en informe les personnes concernées dans les meilleurs délais (article 34). Il peut en outre porter plainte s'il s'agit d'un acte malveillant. »
  3. Erreurs : ALL au lieu de SELECT, compte sans hôte (en MySQL, appli seul signifie 'appli'@'%'). Correction : GRANT SELECT ON boutique.produit TO 'appli'@'localhost'; Si le compte existe avec l'hôte %, il faut d'abord le renommer : RENAME USER 'appli'@'%' TO 'appli'@'localhost';

Tu avais trouvé ?

Chapitre terminé !

Fais l'exercice avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Cours suivant : E7 SISRRevoir le sommaire du cours