BTS SIO 2025 SLAM – Kirassur
Analyse détaillée et méthodologie complète

Trigger MySQL, API REST, clé API, jeton temporaire, HTTPS, IDOR, injection SQL et surveillance des accès.

SLAMSession 2025API RESTSécurité applicativeSQL

Le sujet Kirassur est un cas typique de BTS SIO SLAM : il ne suffit pas de connaître les mots-clés techniques, il faut comprendre les risques applicatifs et justifier les corrections proposées. La page reprend les quatre axes utiles pour réussir : analyse du cas, méthodologies, exemples modèles et pièges à éviter.

Plan de l’analyse

1. Analyse du cas Kirassur : comprendre le problème avant de coder

Kirassur est une compagnie d’assurance automobile qui doit sécuriser son système applicatif. Le sujet met en avant trois enjeux : la fiabilité des règles métier dans la base de données, la sécurisation d’une API accessible par des partenaires et la surveillance des actions sensibles par journalisation.

La grille d’analyse en 4 dimensions

  • Métier : contrôler les sinistres, éviter les fraudes, limiter les déclarations abusives de bris de glace.
  • Application : API REST, endpoint de consultation, paramètres transmis dans l’URL, accès par partenaires.
  • Sécurité : séparation clé API / jeton, vérification d’autorisation, HTTPS, IDOR, injection SQL.
  • Traçabilité : logs d’accès, détection d’énumération de contrats, suivi des comportements suspects.

Le vrai fil conducteur du sujet

Le sujet ne demande pas seulement de “corriger du code”. Il demande de montrer que vous comprenez pourquoi le code est dangereux. Chaque faille doit être reliée à un risque concret : accès aux contrats d’autres assurés, divulgation de données personnelles, contournement des règles métier ou exploitation d’une requête SQL mal construite.

Ce que le correcteur veut voir

Une bonne copie ne se contente pas de nommer “IDOR”, “HTTPS” ou “injection SQL”. Elle explique le mécanisme, donne la conséquence et propose une correction. La phrase gagnante ressemble à ceci : “Le paramètre idContrat ne peut pas être utilisé seul ; le serveur doit vérifier que le contrat demandé appartient bien au partenaire authentifié par la clé API ou à l’assuré associé au jeton.”

Les trois blocs techniques du sujet

BlocCompétence attendueErreur à éviter
Trigger MySQLFaire respecter une règle métier en baseCompter tous les sinistres au lieu de filtrer la garantie concernée
API RESTSécuriser les accès aux contratsConfondre authentification et autorisation
LogsSurveiller les actions anormalesLogger sans exploiter les traces pour détecter les attaques

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

Méthode pour une question de trigger SQL

  1. Identifier la règle métier exacte : ici, la limite concerne la garantie visée, pas tous les sinistres du contrat.
  2. Repérer la table et les colonnes utilisées dans la condition.
  3. Corriger la clause WHERE pour filtrer sur le contrat et sur la garantie.
  4. Expliquer l’effet de la correction avec un exemple concret.

Le point clé : un trigger n’est pas seulement du SQL. C’est une règle métier automatisée. Si la règle est mal traduite, le code peut être syntaxiquement correct mais fonctionnellement faux.

Méthode pour une question de sécurité API

  1. Distinguer authentification : prouver qui appelle l’API.
  2. Distinguer autorisation : vérifier ce que cet appelant a le droit de consulter.
  3. Repérer les paramètres contrôlés par l’utilisateur : idContrat, token, cleAPI.
  4. Bloquer l’accès si le contrat demandé n’appartient pas au périmètre autorisé.

Méthode pour une question d’injection SQL

Le réflexe attendu est toujours le même : remplacer la concaténation de chaînes par une requête préparée. Une donnée utilisateur ne doit jamais être insérée directement dans une requête SQL.

$stmt = $pdo->prepare(
  "SELECT * FROM Token WHERE valeur = :token"
);
$stmt->bindParam(':token', $_GET['token']);
$stmt->execute();

Cette structure empêche que la valeur transmise dans l’URL soit interprétée comme une instruction SQL.

Niveau de difficulté : exigeant mais très rentable

Kirassur est exigeant car il combine développement, base de données et cybersécurité. Toutefois, les questions deviennent très accessibles si vous utilisez toujours la même logique : identifier le risque, expliquer l’exploitation possible, proposer une correction et justifier l’amélioration obtenue.

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

Exemple modèle 1 : correction du trigger

“Le trigger doit compter uniquement les sinistres de la garantie concernée par la nouvelle déclaration. Si la requête compte tous les sinistres du contrat, elle peut signaler à tort un bris de glace alors que les sinistres précédents concernent une autre garantie. Il faut donc compléter la condition avec le contrat et la garantie : Sinistre.idContrat = NEW.idContrat et Sinistre.idGarantie = NEW.idGarantie.”

Exemple modèle 2 : clé API et jeton temporaire

“La clé API identifie le partenaire et donne accès au service applicatif. Elle ne doit pas être transmise à l’assuré car elle ouvrirait un accès trop large. L’assuré doit recevoir un jeton temporaire, limité à son contrat et valable seulement quelques minutes. Cette solution applique le principe de moindre privilège.”

Exemple modèle 3 : limites de HTTPS

“HTTPS chiffre les échanges entre le client et le serveur. Il empêche un attaquant réseau de lire ou modifier les données en transit. En revanche, il ne corrige pas les failles de l’application : si le code accepte un idContrat non autorisé ou concatène un paramètre dans une requête SQL, la faille reste exploitable même en HTTPS.”

Exemple modèle 4 : correction d’une faille IDOR

“Avant de renvoyer les données d’un contrat, l’API doit vérifier que ce contrat appartient bien au partenaire identifié par la clé API ou à l’assuré associé au jeton. Si cette vérification échoue, le serveur doit renvoyer une erreur 403 sans divulguer les données du contrat.”

Exemple modèle 5 : sécuriser une requête SQL

“La requête ne doit pas concaténer directement la valeur du paramètre token. Une requête préparée avec paramètre lié permet de traiter le jeton comme une donnée et non comme du code SQL. Cela neutralise les tentatives d’injection.”

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

Piège 1 : confondre authentification et autorisation

Une clé API valide prouve que l’appel vient d’un partenaire connu. Cela ne prouve pas que ce partenaire a le droit de consulter tous les contrats. Il faut ensuite vérifier l’appartenance du contrat demandé.

Piège 2 : croire que HTTPS règle tout

HTTPS protège le transport. Il ne protège pas contre une faille IDOR, une injection SQL, une mauvaise gestion des rôles ou une absence de contrôle côté serveur.

Piège 3 : corriger l’injection SQL avec un simple test de longueur

Limiter la taille d’un champ peut réduire certains abus, mais ce n’est pas une protection fiable contre SQL injection. La réponse attendue est la requête préparée avec paramètres liés.

Piège 4 : oublier le filtre métier dans le trigger

Le trigger doit correspondre à la règle exacte. Si la règle concerne une garantie précise, le compteur doit filtrer cette garantie. Sinon, la base applique une règle erronée.

Piège 5 : proposer des logs sans expliquer leur utilité

Logger une action ne suffit pas. Il faut indiquer ce que les logs permettent de détecter : énumération d’identifiants, accès refusés répétés, utilisation de jetons expirés ou appels anormaux à l’API.

Stratégie pour viser 15/20 ou plus

Plan d’attaque pendant l’épreuve

  1. Lire le besoin métier : assureur, contrat, sinistre, garantie, partenaire, assuré.
  2. Repérer les entrées utilisateur : URL, paramètres GET, jeton, identifiant de contrat.
  3. Identifier le risque : accès non autorisé, injection, divulgation, fraude.
  4. Proposer une correction technique : filtre SQL, requête préparée, contrôle d’autorisation, jeton court.
  5. Justifier en une phrase : ce que la correction empêche concrètement.

La copie qui dépasse 15/20

Une très bonne copie utilise un vocabulaire précis : moindre privilège, contrôle d’autorisation côté serveur, requête préparée, IDOR, jeton temporaire, traçabilité. Elle ne se contente pas de dire “sécuriser” : elle explique la faille, l’impact et la correction.

FAQ – Sujet Kirassur BTS SIO 2025 SLAM

Quel est le thème principal du sujet Kirassur ?

Le sujet porte sur la sécurité applicative : trigger MySQL, API REST, gestion de jetons, HTTPS, IDOR, injection SQL et journalisation.

Pourquoi utiliser un jeton temporaire plutôt qu’une clé API pour l’assuré ?

Le jeton limite l’accès à un contrat et à une durée courte. La clé API du partenaire donne un accès beaucoup plus large et ne doit pas être exposée à l’assuré.

Quelle est l’erreur typique sur la faille IDOR ?

L’erreur consiste à récupérer un contrat par son identifiant sans vérifier que l’utilisateur ou le partenaire a bien le droit d’y accéder.

HTTPS protège-t-il contre l’injection SQL ?

Non. HTTPS protège les échanges réseau, mais l’injection SQL doit être corrigée dans le code avec des requêtes préparées.

Que faut-il écrire pour une bonne réponse sur les logs ?

Il faut expliquer ce que les logs permettent de détecter : accès refusés, énumération de contrats, jetons expirés ou comportements suspects.

📥 Télécharger le document officiel

Sujet complet BTS SIO 2025 SLAM Kirassur pour travailler l’épreuve.

📄 Sujet complet PDF

📚 Autres sujets SIO

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