Chapitre 8 — Architecture Web & OWASP Top 10
⏱ ~30 min autonome · ~45 min encadré
La sécurité des applications web mérite un chapitre approfondi : c'est le domaine où la surface d'attaque a le plus grandi ces vingt dernières années, et celui que ce cours choisit délibérément de couvrir avec le plus de profondeur.
- Décrire le fonctionnement client-serveur d'une application web et le rôle des sessions/cookies.
- Nommer et expliquer brièvement chacune des dix catégories de l'OWASP Top 10.
- Identifier la surface d'attaque typique d'une application web moderne.
Fonctionnement client-serveur, HTTP/HTTPS
Une application web repose sur un échange de requêtes et de réponses entre un client (navigateur) et un serveur, via le protocole HTTP — ou sa version chiffrée, HTTPS, qui protège la confidentialité et l'intégrité des échanges via TLS (voir Chapitre 11). Chaque requête est, par nature, indépendante des précédentes — HTTP est un protocole sans état (stateless).
Sessions et cookies
Puisque HTTP ne conserve aucun état entre deux requêtes, les applications utilisent des cookies pour simuler une continuité — un identifiant de session stocké côté client et renvoyé à chaque requête, permettant au serveur de savoir « qui » fait la demande. Un cookie de session mal protégé (transmis sans chiffrement, accessible via JavaScript, sans expiration) devient une cible de choix : le voler équivaut souvent à usurper entièrement l'identité de la victime, sans jamais avoir besoin de son mot de passe.
Surface d'attaque d'une application web moderne
Une application web typique expose bien plus qu'un simple formulaire : des API, des dépendances tierces (bibliothèques, frameworks), des services d'authentification externes, et souvent une infrastructure cloud sous-jacente (voir Chapitre 10) — chaque composant ajoute sa propre surface d'attaque potentielle.
L'OWASP Top 10 est un document de référence gratuit et régulièrement mis à jour, représentant un consensus de l'industrie sur les risques les plus critiques pour les applications web. Il structure ce chapitre et le suivant. Aperçu des dix catégories — développées en profondeur dans l'annexe dédiée :
- Contrôle d'accès défaillant — un utilisateur agit en dehors des permissions prévues.
- Défaillances cryptographiques — mauvaise protection des données sensibles.
- Injection — une entrée non validée est interprétée comme du code (voir section 8.3).
- Conception non sécurisée — l'architecture elle-même est vulnérable, indépendamment de son implémentation.
- Mauvaise configuration de sécurité — comptes par défaut, erreurs trop verbeuses.
- Composants vulnérables et obsolètes — dépendances non corrigées.
- Défaillances d'identification et d'authentification — connexion mal protégée.
- Défaillances d'intégrité logicielle et des données — mises à jour non vérifiées.
- Défaillances de journalisation et de surveillance — intrusion invisible faute de détection.
- Falsification de requête côté serveur (SSRF) — le serveur est trompé pour atteindre des ressources internes normalement inaccessibles.