Durcir une application et préparer sa conformité : référentiels en vigueur, contrôle d'accès, injection, secrets, chaîne logicielle, détection et réponse à incident, puis plan de mise en conformité auditable.
Public cible
Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.
Objectifs
Comprendre les notions essentielles et les appliquer dans un projet vérifiable.
Prérequis
Aucune connaissance préalable n’est strictement obligatoire ; les prérequis détaillés sont précisés dans les ateliers.
Niveau
Tous niveaux
Ressources
Documentation officielle et références citées dans les ateliers.
Exercices, examens et projet de synthèse du catalogue.
Validation des compétences
La validation repose sur les évaluations actives et les livrables pratiques du cours.
Besoins techniques
Un ordinateur, un navigateur et les outils indiqués dans le premier atelier sont suffisants pour commencer.
Lire et appliquer les référentiels de sécurité qui engagent l'entreprise.
Repérer les failles applicatives les plus fréquentes et savoir les corriger.
Sécuriser l'accès, la configuration, les secrets et la chaîne logicielle.
Mettre en place une détection et une réponse à incident.
Préparer une mise en conformité auditable.
Public visé
Développeurs, responsables techniques et RSSI. Aucune
expérience préalable en sécurité n'est requise.
Durée
40 heures. Chaque module se termine par un atelier où les
mesures sont vérifiées sur une application réelle.
Avertissement
Ce cours est pédagogique. Il ne remplace pas un audit
professionnel, et les techniques présentées ne doivent pas
être utilisées en dehors d'un cadre autorisé : tester une
application qui n'est pas la sienne est illégal.
OWASP Top 10 : la version en vigueur
Le Top 10 OWASP recense les risques applicatifs les plus
fréquents. La version de référence est la 2025, qui a
remplacé la 2021.
Rang
Risque
A01:2025
Contrôle d'accès défaillant
A02:2025
Mauvaise configuration de sécurité
A03:2025
Défaillance de la chaîne logicielle
A04:2025
Défaillances cryptographiques
A05:2025
Injection
A06:2025
Conception non sécurisée
A07:2025
Défaillances d'authentification
A08:2025
Défaillance d'intégrité des logiciels ou des données
A09:2025
Défaillance de journalisation et d'alerte
A10:2025
Mauvaise gestion des conditions exceptionnelles
Deux enseignements à retenir de cette évolution : la chaîne
logicielle (A03) est entrée au classement, ce qui traduit
le poids réel des dépendances et des systèmes de
construction ; et la gestion des conditions exceptionnelles
(A10) fait son apparition, alors qu'on la croyait traitée
depuis des années.
NIS2 et RGPD : ce qui engage l'entreprise
NIS2
La directive (UE) 2022/2555 sur la sécurité des réseaux et
des systèmes d'information devait être transposée en droit
national le 17 octobre 2024.
elle étend les obligations à des secteurs entiers
qu'ils relevaient du périmètre précédent ;
les entités concernées doivent s'enregistrer
auprès de l'ANSSI ;
elles doivent signaler les incidents de sécurité
d'impact important ;
des sanctions administratives sont prévues,
pouvant atteindre un pourcentage du chiffre d'affaires
mondial, avec interdiction temporaire d'exercer les
responsabilités du dirigeant.
La transposition française étant encore en cours au moment
de la rédaction, le cours ne prétend pas décrire le détail des
textes : il faut se référer aux publications de l'ANSSI, qui
publie par ailleurs un socle de mesures de référence.
RGPD
Le règlement européen 2016/679 s'applique à toute entité
traitant des données de personnes physiques dans l'Union. Il
n'est pas un référentiel technique mais un cadre d'obligations
: registre des traitements, analyses d'impact,notification
des violations sous 72 heures, et principes de protection dès
la conception.
À retenir : une faille de sécurité et une
non-conformité ne sont pas la même chose, mais elles se
combinent. Une violation de données est d'abord un problème
de conformité, ensuite une faille technique.
Modèle de menace
Avant de protéger quoi que ce soit, on écrit ce qu'on
cherche à protéger, ce contre quoi, et ce qu'on accepte de
perdre. Sans ce document, les mesures sont choisies au
hasard.
Quoi protéger : les données clients, la facturation, l'acces administrateur
Contre quoi : une personne non autorisee, un voleur, une erreur interne
Perte acceptable : indisponibilite de 2 h ; perte de donnees : aucune
Engins : acces direct, vol de secret, injection, componente vulnerable
Le modèle de menace sert ensuite de critère
d'arbitrage : quand deux mesures sont possibles, on retient
celle qui traite la menace qu'on a identifiée.
Accès, injection et authentification
Contrôle d'accès défaillant (A01)
C'est le premier risque du classement 2025. Il ne s'agit
pas seulement d'oublier une vérification : c'est le cas
classique où l'application vérifie l'accès sur l'écran mais
pas sur l'API.
Vérifier côté serveur, à chaque requête
# FAIBLE : le controle est dans l'ecran, l'API reste ouverte
@app.route("/api/tickets")
def liste():
return jsonify(Ticket.query.all()) # n'importe quel utilisateur voit tout
# CORRECT : le controle est dans la couche d'acces
@app.route("/api/tickets/<id>")
@require_authenticated
def detail(id):
ticket = Ticket.query.get_or_404(id)
if ticket.dossier_id != g.utilisateur.dossier_id:
abort(403) # on verifie la propriete, pas seulement l'identite
return jsonify(ticket.serialize())
La règle : une donnée appartient à quelqu'un. La
question n'est jamais « l'utilisateur est-il connecté ? »
mais « cette donnée lui appartient-elle ? ».
Le test systématique
Pour chaque point d'accès : lister ce que l'API expose,
puis demander chaque ressource avec les identifiants d'un
autre utilisateur. Ce contrôle, appelé test d'IDOR
(référence directe non sécurisée), trouve plus de failles
que l'analyse de code.
Injection (A05)
Une injection survient quand une donnée utilisateur est
concaténée dans une commande interpretée : requête SQL,
commande système, expression régulière, requête NoSQL.
Le principe
# Vulnerable : la saisie est concatenee dans la requete
cur.execute("SELECT * FROM users WHERE nom = '" + nom + "'")
# Correct : la requete est preparee, la valeur est un parametre lie
cur.execute("SELECT * FROM users WHERE nom = %s", (nom,))
La requête préparée n'est pas « le SQL le plus sûr » :
c'est une frontière. Le moteur reçoit la structure d'un
côté, les données de l'autre, et ne les mélange jamais.
Les autres vecteurs
Système : ne jamais passer une saisie à un
shell ; utiliser un appel direct au programme avec une
liste d'arguments.
NoSQL : un objet passé tel quel peut devenir un
opérateur ; vérifier le type avant usage.
Expressions régulières : une entrée
utilisateur dans un motif peut provoquer un accès
inattendu aux données, voire un déni de service.
En-têtes et journaux : un retour à la ligne
dans un journal permet d'y injecter une fausse entrée —
c'est l'injection de journal.
Priorité : la requête préparée d'abord, la
validation en second. Valider en déniant des caractères
spécifiques est fragile ; la requête préparée tient quelle
que soit la donnée.
Défaillances d'authentification (A07)
Mots de passe : hachage avec un algorithme
lent et salé (bcrypt, Argon2, scrypt). Un algorithme
rapide est une catastrophe : il
accélère aussi l'attaque par force brute.
Stockage des sessions : un jeton
d'authentification doit être aléatoire, conservé côté
serveur, invalidé à la déconnexion et à la
réinitialisation du mot de passe.
Limitation : après quelques échecs, la
tentative doit être ralentie ou bloquée, sans laisser
d'information sur l'existence du compte.
Réinitialisation : le lien de
réinitialisation doit être à usage unique et expirer
rapidement.
Multi-facteurs : activé par défaut sur les
comptes à privilèges.
Deux erreurs classiques : un message d'erreur qui
distingue « compte inconnu » de « mot de passe faux », et
un mot de passe oublié qui ne change pas la session
courante — l attaquant reste connecté.
Exercices
Test d'IDOR : sur une application de votre
atelier, listez les points d'accès qui exposent une
ressource par identifiant et testez-les avec un autre
compte.
Correction d'injection : réécrivez une
recherche qui concatène, en requête préparée. Ajoutez un
caractère spécial en entrée pour vérifier que la
correction tient.
Revue d'authentification : relevez les
messages d'erreur, la vitesse de réponse, la
politique de mot de passe et la réinitialisation.
Notez chaque écart.
Configuration, chiffrement et secrets
Mauvaise configuration (A02)
Deuxième risque du classement 2025, et le plus facile à
éviter : une configuration par défaut, un mode debug actif,
un en-tête manquant.
Environnement de production identifié
clairement, avec une liste de contrôle avant mise en
service.
Mode debug et pages d'erreur détaillés
désactivés : une trace d'exécution révèle la pile
d'appels, la version et les chemins.
Compte par défaut supprimé ou changé.
Répertoires sensibles (administration,
phpmyadmin, console) restreints par adresse.
En-têtes HTTP de sécurité : politique de
contenu, transport forcé, protection contre le
clickjacking, référentiel de politiques.
Le réflexe : comparer la configuration de
production à celle de développement, ligne par ligne. La
différence est souvent le paramètre même du problème.
Défaillances cryptographiques (A04)
Le chiffrement ne sert qu'à deux choses : la
confidentialité en transit et au repos, et
l'intégrité. Tout le reste est du folklore.
En transit : TLS partout, y compris entre
services internes. Le réseau interne n'est pas un
réseau de confiance.
Au repos : base de données, sauvegardes,
objet stocké.
Les mots de passe ne se chiffrent pas : ils se
hachent, avec un algorithme lent et un sel par
utilisateur.
Le secret ne se dérive pas du reste : une
clé déduite du mot de passe est une clé faible.
Deux erreurs classiques : faire sa propre
cryptographie, et réutiliser un mode de chiffrement sur
toutes les données. Quand on emploie une bibliothèque
éprouvée, on lit ce qu'elle documente sur le mode
d'emploi, et on ne le change pas au hasard.
Gestion des secrets
Un secret est toute valeur qui donne un accès : mot de
passe, jeton, clé, certificat. Sa fuite est presque
toujours due à trois erreurs.
Secret dans le dépôt : même supprimé ensuite,
il reste dans l'historique et dans les clones. Le
changer est la seule action qui vaut.
Secret en clair dans la configuration : il faut
une source externe : coffre à secrets du
fournisseur, coffre de l'hébergeur, gestionnaire de
secrets — et une injection à l'exécution.
Secret dans les journaux : un secret écrit dans
une trace est compromis, même si la trace est
supprimée ensuite.
La règle de lecture : un secret ne doit jamais
pouvoir être lu depuis le code, jamais apparaître dans un
journal, et pouvoir être changé sans redéploiement de
l'application.
Exercices
Liste de contrôle : écrivez la liste de
configuration de votre environnement de production, et
vérifiez-la ligne par ligne.
Inventaire des secrets : listez tous les
secrets utilisés par votre application, et indiquez pour
chacun où il est stocké et s'il apparaît dans un
journal.
Rotation : décrivez la procédure de
rotation d'un secret, et vérifiez qu'elle peut être
exécutée sans redéploiement complet.
Chaîne logicielle et intégrité
Défaillance de la chaîne logicielle (A03)
Ce risque entre au Top 10 en 2025 : il traduit le poids
réel des dépendances, des registres et des systèmes de
construction. Une application n'est plus seulement son
code : c'est son code plus tout ce qu'elle embarque.
Les trois surfaces
Dépendances : une bibliothèque compromise se
propage à toutes les applications qui l'utilisent.
Registres et installateurs : un paquet
publié puis retiré reste dans des caches et sur des
machines.
Systèmes de construction : c'est là que se
décide ce qui est réellement compilé et publié.
Les mesures qui comptent
Verrouiller les versions et garder le fichier
de verrouillage versionné : c'est ce qui rend une
construction reproductible.
Réduire les dépendances : chaque
dépendance est une surface d'attaque. Une petite
bibliothèque stable vaut mieux qu'un ensemble
instable et non maintenu.
Vérifier les signatures et empreintes des
artefacts téléchargés, et échouer si elles diffèrent.
Analyser les vulnérabilités de façon
automatique, avec un seuil qui bloque le
déploiement.
Isoler la construction : l'environnement
qui construit n'a pas accès aux secrets de production.
Intégrité des logiciels et des données (A08)
Cette entrée couvre la confiance accordée à un
artefact, et la vérification de ce qu'on a downloaded.
Mise à jour automatique : vérifier la
signature avant d'appliquer, jamais après.
Désérialisation : lire une donnée sérialisée
venue de l'extérieur peut exécuter du code. Les
chargeurs sûrs n'instancient que les classes
autorisées.
Intégrité des données au repos : un
chiffrement sans authentification ne protège pas — un
contenu chiffré reste modifiable, avec un risque de
permutation. Il faut un mode qui authentique
également.
Signatures de code : signer l'artefact
publié permet de vérifier qu'il vient bien de vous.
Mauvaise gestion des conditions exceptionnelles (A10)
Entrée nouvelle du Top 10 2025, et pourtant ancienne
cause de failles : le traitement de l'échec.
Erreur masquée : un except qui
ignore l'erreur transforme un problème visible en
silence.
Message trop détaillé : renvoyer une trace
d'exécution à l'utilisateur facilite l'exploitation ;
on journalise côté serveur, on répond « une erreur est
survenue ».
Opération à moitié faite : si la seconde
étape échoue, la première a déjà été appliquée. C'est
l'absence de transaction qui laisse le système dans un
état incohérent.
Échec non traité : un service qui
s'interrompt sur une entrée imprévue devient un
déni de service.
Le principe : l'échec est un chemin normal. Il se
conçoit, se teste et se mesure, exactement comme le cas
nominal.
Exercices
Inventaire des dépendances : listez les
dépendances directes et transitives de votre projet, et
identifiez celles qui ne sont plus utilisées.
Traitement d'erreur : relevez tous les blocs
qui masquent une erreur dans votre application et
remplacez-les par un traitement explicite.
Transaction :Operations une opération en
deux étapes dont la seconde peut échouer, et montrez ce
qu'un traitement non transactionnel laisse derrière
lui.
Détection et réponse à incident
Journalisation et alerte (A09)
Neuvième risque du classement 2025. Une intrusion non
détectée est une intrusion qui dure : la question n'est pas
seulement « cela s'est-il produit ? » mais « combien de temps
avant que je le sache ? ».
Ce qu'il faut journaliser
connexions et échecs d'authentification ;
changements de privilèges et création de comptes ;
accès aux données sensibles et exports en masse ;
modifications de configuration et de secrets ;
échecs applicatifs inhabituels.
Ce qu'il ne faut pas journaliser
Mot de passe, jeton, carte bancaire, donnée personnelle
complète. Un journal qui contient un secret devient une
cible, et un journal plein de secrets coûte cher à
protéger.
L'alerte
Un journal sans seuil d'alerte n'est qu'un fichier.
Quelques signaux à surveiller en priorité : échecs
d'authentification en rafale, accès inhabituels à des
données sensibles hors heures ouvrées, et toute
élévation de privilège.
Réponse à incident
La réponse à incident se prépare à froid. En pleine
crise, personne n'improvise bien : les décisions se
prennent à partir d'un document écrit avant.
Préparer : qui décide, qui intervient, comment
joindre l'ANSSI ou le client, comment préserver les
preuves.
Détecter et qualifier : périmètre, données
concernées, impact.
Contenir : isoler sans détruire les traces.
Éradiquer et corriger : la cause, pas seulement
le symptôme.
Réagir : information des personnes
concernées, notification aux autorités si obligatoire.
Apprendre : retours d'expérience écrits, mesures
ajoutées au guide de production.
Deux échéances à connaître : le RGPD impose de
notifier une violation de données à l'autorité de contrôle
dans les meilleurs délais et, lorsque le risque est élevé,
aux personnes concernées ; NIS2 impose aux entités
concernées de signaler les incidents d'impact important à
l'ANSSI, selon les règles nationales de notification.
Le réflexe de départ, avant toute analyse : préserver
les preuves. Redémarrer une machine ou purger des
journaux fait perdre ce qui désigne la cause.
Observation et déplacement latéral
La référence publique pour décrire le comportement d'un
attaquant est MITRE ATT&CK, qui organise ses techniques en
tactiques. L'intérêt n'est pas la liste : c'est la
méthode.
Sur une machine compromise, on regarde ce que le
processus fait réellement : les processus lancés, les
connexions sortantes, les clés d'accès lues, les comptes
utilisés. La plupart des intrusions ne restent pas sur la
machine d'entrée : elles se déplacent latéralement vers
d'autres machines, ce qui n'apparaît sur aucun pare-feu
puisqu'il s'agit de trafic autorisé par des identifiants
volés.
La parade tient en deux points : principe du moindre
privilège — un compte de service ne fait que ce qu'il
lui faut — et surveillance des comptes — un usage
inhabituel d'un compte service doit remonter.
Exercices
Plan d'incident : écrivez la procédure de
réponse à incident de votre application : qui fait quoi,
dans quel ordre, et à quoi on ne touche pas.
Revue des journaux : relevez ce que votre
application journalise aujourd'hui, et complétez la
liste manquante.
Exercice de crise : simulez la compromission
d'un compte de service et décrivez les trois premiers
gestes, sans rien détruire.
Projet final et mise en conformité
Projet final : auditer et durcir une application
Le projet porte sur une application de votre choix, et
vise un résultat vérifiable : un rapport de conformité et
des mesures effectivement appliquées.
Les cinq livrables
Modèle de menace : ce qu'on protège, contre
quoi, et ce qu'on accepte de perdre.
Revue sur le Top 10 2025 : pour chacune des
dix entrées, l'état, la preuve et la mesure
prévue.
Tests d'accès : tests d'IDOR et élévation de privilège
réellement exécutés, avec le résultat obtenu.
Inventaire des secrets et de la chaîne
logicielle : dépendances, versions verrouillées, surface
d'attaque.
Plan de durcissement : mesures priorisées par
effort et par impact, avec une échéance par mesure.
Critères de réussite
chaque ligne du rapport renvoie à une preuve
reproductible, pas à une impression ;
les cinq risques les plus probables sont traités en
premier, pas les plus visibles ;
le plan est réalisable : chaque mesure a un
responsable et une échéance ;
le rapport pourrait être lu par un auditeur
externe sans oral.
Mise en conformité
La conformité se prépare comme un projet, pas comme une
déclaration. Trois constats utiles :
Le périmètre se décide tôt : savoir si
l'entité relève de NIS2 conditionne tout le reste. La
France n'ayant pas encore achevé sa transposition, on se
réfère aux publications de l'ANSSI, qui propose un
enregistrement en ligne et un socle de mesures.
Les preuves priment sur les déclarations : ce
qui est demandé, ce sont des traces : registres,
comptes rendus, journaux, tests, rapports.
La sécurité des données est un obligation de
moyen : on ne garantit pas qu'aucune violation
n'aura lieu, on montre qu'on a fait ce qu'il fallait
pour la prévenir et la traiter.
Deux référentiels ne sont pas obligatoires mais servent
de structuration : ISO/IEC 27001 pour le système de
management, et le référentiel CIS Controls pour les
mesures techniques de référence.
Ressources et évaluation
Évaluation
Quiz à la fin de chaque module.
Atelier : test d'accès et correction sur une
application de votre choix.
Projet final : rapport et plan de durcissement,
évalués sur la qualité des preuves.
Revue : chaque atelier est relu, les remarques
portent sur des points vérifiables.
Grille du projet
méthodique : le modèle de menace précède les
mesures
Auditer une application dont on ne possede pas le code, et verifier ce qu'on avance.
Controle d’objet : tenter d’acceder a une ressource d’un autre compte et decrire le resultat attendu avant de tester.
Surface : relever les cinq entrees d’une API, et dire pour chacune si elle est validee cote serveur.
Secrets : chercher un secret expose cote client, et expliquer pourquoi il n’est pas secret.
Rapport : rediger le constat : risque, preuve, consequence, correction proposee.
Restitution de l’atelier
Un modele de menace d’une page.
Le tableau de verification, une ligne par risque, avec preuve.
Un plan de durcissement priorise, avec une echeance par action.
Validation : Chaque ligne du rapport renvoie a une preuve reproductible. Une affirmation sans preuve n’y figure pas.
Publié le 28/09/2026
🍪 Gestion des Cookies
Nous utilisons des cookies pour améliorer votre expérience. Certains sont essentiels au fonctionnement du site, d'autres nous aident à analyser l'utilisation et à personnaliser le contenu.