15 chapitres4 h 39 minIntermédiaire
Sécurité applicative
Cours de sécurité applicative du BTS SIO SLAM, bâti sur l'OWASP Top 10 2025 : contrôle d'accès, injections, XSS, CSRF, JWT, logs et exercices corrigés.
Par Josselyn C., prof de BTS SIO. Mis à jour le .
L'essentiel
La sécurité applicative regroupe tout ce que tu fais, en concevant et en codant une application, pour qu'un attaquant ne puisse ni lire des données qui ne lui sont pas destinées, ni les modifier, ni rendre le service indisponible. Elle se joue dans ton code (requêtes, contrôles d'accès, affichage des saisies), dans ses dépendances, dans sa configuration et dans ses journaux. Au BTS SIO, c'est le cœur de l'écrit E7 de l'option SLAM, « Cybersécurité des services informatiques », et une exigence implicite de l'E6 : une application qui laisse un salarié lire la note de frais d'un collègue ne répond pas au besoin.
Ce cours suit l'OWASP Top 10 2025, la liste de référence des risques des applications web publiée par la fondation OWASP : un chapitre par grande famille de failles, avec l'attaque, la parade dans le code et des exercices corrigés. Les exemples tournent autour d'une même application, AppliFrais, écrite en Node.js et en PHP.
À la fin de ce cours, tu sauras :
- nommer les dix risques de l'OWASP Top 10 2025 et classer une faille dans la bonne catégorie ;
- repérer dans un extrait de code une injection, une XSS, une CSRF ou un contrôle d'accès manquant, et le corriger ;
- stocker un mot de passe, gérer une session ou un jeton JWT et protéger un secret sans erreur classique ;
- tenir à jour les dépendances d'un projet et produire son inventaire (SBOM) ;
- journaliser les bons événements et retrouver une attaque dans des logs, à la main ou en SQL ;
- auditer une application avec une revue de code, un outil SAST et un scanner DAST ;
- répondre à une question de sécurité de l'E7 avec une méthode qui rapporte des points.
Prérequis. Savoir lire un peu de code JavaScript ou PHP et une requête SQL simple. Le cours SQL, puis le cours PHP et MySQL ou le cours Node.js et Express, suffisent largement.
Comment travailler. Lis les chapitres 1 et 2 d'abord : ils posent le vocabulaire et la carte des risques. Les chapitres suivants se lisent dans l'ordre que tu veux. Tape les exemples sur ta propre copie d'AppliFrais ou sur une application d'entraînement (OWASP Juice Shop, DVWA), jamais sur un site qui ne t'appartient pas. Chaque chapitre se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.
| Ton objectif | Chapitres à travailler en priorité |
|---|---|
| Découvrir la sécurité applicative | 1, 2, 3, 7 et 8 |
| Préparer l'E7 SLAM | 2, 3, 6, 7, 11, 12, 13 et 15 |
| Sécuriser ton projet pour l'E6 | 3, 4, 5, 7, 8, 9 et 11 |
| Auditer une application existante | 2, 12 et 14 |
| Réviser la veille de l'épreuve | 2 et 15 |
Sommaire
Sécurité applicative
0 chapitre sur 15
- Chapitre 1 : C'est quoi la sécurité applicative ?16 min
- Chapitre 2 : OWASP Top 10 2025 : les dix risques expliqués14 min
- Chapitre 3 : Contrôle d'accès défaillant (A01) : IDOR, droits et SSRF23 min
- Chapitre 4 : Mauvaise configuration (A02), environnements et secrets16 min
- Chapitre 5 : Chaîne d'approvisionnement (A03) et intégrité (A08) : dépendances et SBOM16 min
- Chapitre 6 : Défaillances cryptographiques (A04) : hacher, chiffrer, HTTPS17 min
- Chapitre 7 : Injections (A05) : SQL, NoSQL et commandes système19 min
- Chapitre 8 : Faille XSS : réfléchie, stockée, DOM et CSP17 min
- Chapitre 9 : Faille CSRF, cookies et en-têtes de sécurité HTTP17 min
- Chapitre 10 : Conception sécurisée (A06) et protection des données dès la conception14 min
- Chapitre 11 : Authentification (A07) : mots de passe, sessions, JWT et MFA23 min
- Chapitre 12 : Journalisation (A09) et gestion des erreurs (A10) : analyser les logs27 min
- Chapitre 13 : Sécuriser une API REST et une application mobile19 min
- Chapitre 14 : Tests de sécurité : revue de code, SAST, DAST et SCA17 min
- Chapitre 15 : E7 SLAM : méthode et sujet corrigé23 min
Questions fréquentes
C'est quoi la sécurité applicative ?
La sécurité applicative regroupe les mesures prises pendant la conception, le développement et l'exploitation d'une application pour protéger ses données et son fonctionnement contre les attaques : contrôle d'accès, requêtes préparées, encodage des sorties, gestion des mots de passe et des sessions, mises à jour des dépendances, journalisation. Elle vise à garantir la disponibilité, l'intégrité, la confidentialité et la traçabilité (les critères DICP). Au BTS SIO, c'est le cœur de l'écrit E7 de l'option SLAM.
C'est quoi l'OWASP Top 10, et quelle est la dernière version ?
L'OWASP Top 10 est la liste des dix catégories de risques les plus critiques pour les applications web, publiée par la fondation OWASP. La version en vigueur est l'OWASP Top 10:2025, qui remplace celle de 2021 : le contrôle d'accès défaillant reste premier et absorbe la SSRF, et deux catégories apparaissent, la chaîne d'approvisionnement logicielle (A03) et la mauvaise gestion des conditions exceptionnelles (A10). Écris toujours l'année avec le code : A03:2021 et A03:2025 ne désignent pas la même catégorie.
Quelles sont les failles les plus courantes d'une application web ?
Le contrôle d'accès défaillant arrive en tête du Top 10 : un utilisateur lit ou modifie les données d'un autre en changeant un identifiant (IDOR), ou appelle une fonction réservée. Viennent ensuite la mauvaise configuration, les dépendances vulnérables, les défauts cryptographiques et les injections (SQL, XSS). Les injections comptent le plus de vulnérabilités publiées : plus de 30 000 pour le seul XSS selon l'OWASP.
Quelle est la différence entre une faille XSS et une faille CSRF ?
Une XSS injecte du JavaScript dans une page du site : le script s'exécute dans le navigateur de la victime avec les droits du site, et peut lire la page, voler la session ou agir à sa place. Une CSRF n'injecte rien dans le site : une page d'un autre site fait envoyer une requête par le navigateur de la victime, qui y joint ses cookies, sans pouvoir lire la réponse. On se protège de la XSS en encodant les sorties, de la CSRF avec un jeton anti-CSRF et l'attribut SameSite des cookies.
Comment se protéger d'une injection SQL ?
Avec des requêtes préparées : la structure de la requête est envoyée d'abord, avec des marqueurs, et les valeurs ensuite, séparément, de sorte qu'elles ne peuvent jamais devenir du code SQL. Échapper les apostrophes à la main ne suffit pas. Les noms de colonnes ou de tables, qu'un marqueur ne peut pas remplacer, passent par une liste blanche, et le compte SQL de l'application n'a que les droits nécessaires pour limiter les dégâts.
Quelle est la différence entre authentification et autorisation ?
L'authentification vérifie qui est l'utilisateur (identifiant et mot de passe, jeton, biométrie). L'autorisation vérifie ce qu'il a le droit de faire, sur quelle donnée (lire sa propre fiche, valider une fiche quand on est comptable). La plupart des contrôles d'accès défaillants viennent d'une application qui authentifie correctement mais oublie l'autorisation (chapitre 3).
Quelle est la différence entre hachage et chiffrement ?
Le hachage est à sens unique : on ne retrouve pas la donnée d'origine à partir de l'empreinte. Il sert à stocker les mots de passe, avec un algorithme lent et salé comme Argon2id ou bcrypt. Le chiffrement est réversible avec une clé : il sert aux données qu'on doit relire, comme un IBAN, avec AES-256-GCM par exemple (chapitre 6). « Chiffrer les mots de passe » est donc une erreur.
Session ou JWT : que choisir ?
La session garde l'état de la connexion sur le serveur et ne donne au navigateur qu'un identifiant dans un cookie : elle se révoque immédiatement et convient bien à une application web classique. Le JWT contient lui-même l'identité, signée par le serveur : il convient aux API consommées par une application mobile ou plusieurs services, mais se révoque mal avant son expiration, d'où des jetons d'accès courts. Un JWT est signé, pas chiffré : son contenu est lisible par tous (comparaison détaillée).
C'est quoi SAST et DAST ?
Le SAST (Static Application Security Testing) analyse le code source sans l'exécuter, avec des outils comme Semgrep ou SonarQube : il repère les requêtes concaténées, les fonctions dangereuses, les secrets écrits en dur. Le DAST (Dynamic Application Security Testing) attaque l'application en fonctionnement, comme le ferait un attaquant, avec des outils comme ZAP : il repère les en-têtes manquants, les XSS, les injections visibles de l'extérieur. Les deux se complètent, avec l'analyse des dépendances (SCA) et la revue de code (chapitre 14).
Quelle sécurité tombe à l'E7 SLAM ?
L'écrit E7 « Cybersécurité des services informatiques » (4 heures) est une étude de cas : analyse de risques DICP, protection des mots de passe et des données, méthodes de contrôle des droits à écrire, comptes et droits SQL, journalisation et requêtes d'analyse des journaux, sécurisation d'une API REST, authentification (mot de passe oublié, SSO), parfois une application mobile, et des questions de droit (RGPD, Code pénal). Jusqu'à la session 2024, cette épreuve s'appelait E6 (U6) : les sujets 2022 à 2024 restent d'excellents entraînements (méthode et cas corrigé).