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)

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses Java, architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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

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:

Contact

Questions, inscriptions, demande d'adaptation: