Sécurité des applications: AppSec et DevSecOps
La sécurité est souvent un angle mort dans le profil d’un développeur. Il s’agit d’une discipline à part entière, mais un développeur doit être à l’aise avec les notions de chiffrement et de hachage, connaître les attaques courantes et leurs contre-mesures et enfin s’assurer que le code livré en production est sûr.
L’IA donne de nouveaux moyens aux attaquants, cela oblige à renforcer les stratégies de cybersécurité des entreprises. Ce cours ne prétend pas transformer un développeur en expert cybersécurité, mais vise lui donner des bases solides et les bons reflexes (« Think like a hacker ») pour travailler dans un contexte où les exigences de sécurité sont élevées.
(14 heures)
Développeurs et développeuses Java, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- sécuriser une application web;
- interagir avec un serveur OIDC;
- protéger les mots de passe;
- activer TLS sur la couche réseau;
- chiffrer des données et des messages;
- impliquer la sécurité dans un pipeline CI / CD.
Prérequis
Ce cours demande une connaissance solide des bases de la programmation Java (principes de la programmation orientée objet, types génériques, annotations, expressions lambda), une habitude de travailler avec Eclipse ou IntelliJ.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Introduction
- la cryptographie et la sécurité: deux domaines compléntaires mais distincts;
- vocabulaire: chiffrement, hachage, clef, certificat, signature, forward secrecy, CVE, zero thrust;
- OWASP Top Ten 2025 et CWC Top 25 2025;
- sécurité au niveau réseau, sécurité au niveau applicatif;
- les outils de contrôles des vulnérabilités : SAST, DAST et IAST;
- quelques algorithmes: SHA, AES, RSA, Elliptic curve encryption. Cas d'usage et performances;
- « Think like a hacker », étude de quelques vulnérabilités : Spring4Shell, dependency confusion....
Sécurisation d'une API
- configuration du serveur web :
- activation de TLS (génération des clefs, obtention du certificat, configuration du serveur, handshake);
- vérification du contenu des requêtes HTTP (en-têtes, paramètres, body, parts...);
- protection contre les usages abusifs (rate limiting, timeouts, utilisation des virtual threads) ;
- la gestion des logs.
- authentification :
- protection des mots de passe (hashing, salt, cost), algorithmes disponibles;
- authentification par cookie ;
- authentification par jeton JWT : génération des tokens, signature, vérification, révocation;
- authentification hybride (Cookie + JWT) avec le principe de token relay.
- attaques courantes (XSS, CRSF, log injection, sql injection, authorization bypass...) et contre mesures;
- bonnes pratiques d’accès aux données : pagination, race condition...
- définition d’une CORS (Cross origin ressource sharing) policy;
- introduction à Mutual TLS pour les appels internes entre API (trafic east-west), rôle d’un sidecar.
Mise en pratique: sécurisation d'une application web Spring Boot avec Spring Security, configuration du serveur embarqué Tomcat.
Chiffrement des données
- les mots-clefs du chiffrement : confidentialité des données, authenticité, intégrité, non-répudiation;
- description d’une Public key Infrastructure (PKI), avec ou sans KMS, avec ou sans HSM;
- le problème de la poule et de l’œuf, l'échange de clefs avec Diffie Hellman;
- l'échange de données chiffrées avec CMS (Cryptographic Message Syntax);
- chiffrement de la base de données, row level encryption ou chiffrement du fichier.
Mise en pratique: mise en place d'une KPI, chiffrement des données et des messages dans une architecture microservices Spring Boot.
Bonnes pratiques CI/CD
- génération du SBOM et publication sur DependencyTrack;
- scan de vulnérabilités avant livraison;
- la gestion des secrets en production:
- utilisation d'un coffre-fort (Hashicorp vault) ou de Spring Cloud Config server;
- chiffrement des propriétés et déchiffrement au démarrage de l’application avec Jasypt;
- introduction à gestion des secrets avec Kubernetes.
Mise en pratique: création d'un pipeline CI impliquant la sécurité pour l'API réalisée précédemment, accès aux informations sensibles lors du déploiement.
En option (0.5 jours): Sécurisation d’une single page application Angular
- utilisation d’un hash SRI et des content security policy (CSP) pour l’inclusion des scripts;
- vérification des templates;
- sanitisation des données;
- configuration du serveur et du client pour activer la protection contre les cross site request forgery (CSRF);
- déclaration des guards;
- JWT: choix d’un flow, protection du jeton, renouvellement du jeton, principe PKCE;
- contrôle de l’intégrité du client HTTP.
Mise en pratique: sécurisation d'un frontend Angular, communication avec l'API réalisée précédemment.
Prix et financements
2 12
Option Angular: +25%
À partir de 4 participants: réduction de 50% pour les associations reconnues d'utilité publique.Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- le dispositif FSE+ si votre organisation est éligible;
- le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).