OWASP & AppSec

OWASP Top 10 expliqué simplement : analogies 2026

OWASP Top 10 Web 2021 expliqué avec des analogies concrètes, un scénario réel et une défense pour chaque vulnérabilité. Format accessible juniors, non-AppSec, PME.

Naim Aouaichia
15 min de lecture
  • OWASP Top 10
  • AppSec
  • Vulgarisation
  • Sécurité Web
  • Débutants
  • Juniors

Le OWASP Top 10 Web est la liste des 10 catégories de vulnérabilités les plus critiques qui peuvent affecter une application web, publiée par la fondation OWASP (Open Worldwide Application Security Project) depuis 2003 et mise à jour tous les 3-4 ans. La version en vigueur en 2026 est le OWASP Top 10 Web 2021 (une version 2025 RC1 est en draft public). Pour le lire vite : chaque catégorie porte un code (A01 à A10), un nom, une idée générale, des exemples concrets et des défenses recommandées. Ce n'est pas une liste exhaustive des failles web — c'est le socle minimum que tout développeur, chef de projet IT, RSSI ou apprenant cybersécurité doit comprendre avant de toucher à une application en production. Cet article explique chaque catégorie avec une analogie du quotidien, un scénario concret, et une défense principale — en français, sans jargon inutile, au niveau d'un développeur junior qui découvre l'AppSec ou d'un chef de projet non cyber qui arbitre les priorités sécurité.

1. Comment lire le OWASP Top 10

Chaque catégorie du Top 10 est notée A01, A02, ..., A10. A pour Application. Le numéro correspond au rang de criticité estimé par OWASP sur la base de trois facteurs : fréquence, impact potentiel, facilité d'exploitation. A01 est la plus répandue et/ou la plus grave ; A10 est importante mais moins prévalente.

La criticité du Top 10 ne se lit pas comme un classement de dangerosité absolue : une A10 (SSRF) bien exploitée peut causer plus de dégâts qu'une A05 (misconfiguration) mineure. Le Top 10 classe par prévalence + risque moyen, pas par « pire scénario imaginable ».

2. Vue d'ensemble : les 10 catégories en un coup d'œil

CodeNom OWASPIdée simpleExemple quotidien
A01Broken Access ControlOn accède à ce qu'on ne devrait pasLire le dossier médical d'un autre patient
A02Cryptographic FailuresLes secrets ne sont pas vraiment secretsCoffre-fort avec une serrure facile à crocheter
A03InjectionOn mélange instruction et donnéeUn cuisinier qui prend une commande comme un ordre
A04Insecure DesignLe plan est mauvais dès le départPlan de maison sans serrure sur la porte d'entrée
A05Security MisconfigurationLe produit est bon, l'installation est bancaleAlarme installée mais pas activée
A06Vulnerable and Outdated ComponentsDes pièces détachées défectueusesPneu rappelé qu'on n'a pas changé
A07Identification and Authentication FailuresLa porte d'entrée est faibleSerrure qui s'ouvre avec un passe-partout
A08Software and Data Integrity FailuresOn fait confiance à ce qu'on ne devrait pasCoursier qui modifie le colis en route
A09Security Logging and Monitoring FailuresL'alarme ne sonne pasCaméra de surveillance éteinte
A10Server-Side Request ForgeryLe serveur va chercher là où il ne devrait pasUn majordome qu'on envoie fouiller chez le voisin

3. Les 3 premières : accès, secrets, injection (A01-A03)

3.1 A01 Broken Access Control — « J'accède à ce que je ne devrais pas »

L'idée simple. L'application vérifie bien que tu es connecté, mais elle ne vérifie pas correctement que tu as le droit d'accéder à la ressource précise que tu demandes. C'est comme un hôtel qui vérifie que tu as une carte d'employé mais pas si cette carte ouvre la chambre 302 ou toutes les chambres.

Un scénario. Tu es connecté sur un site de facturation avec ton compte. Tu cliques sur « Voir ma facture n°42 » et l'URL devient /factures/42. Tu changes 42 en 43 dans la barre d'adresse et tu vois la facture du voisin. Ça s'appelle un IDOR (Insecure Direct Object Reference). L'application a vérifié que tu étais connecté mais pas que la facture 43 t'appartenait.

La défense. Pour chaque ressource demandée, vérifier côté serveur que l'utilisateur connecté a bien le droit d'y accéder. Pas « est-il connecté » mais « a-t-il le droit à cet objet précis ».

Pourquoi c'est la #1. 3,81 % des applications testées présentent une occurrence, soit plus de 318 000 cas documentés. C'est la catégorie la plus répandue.

3.2 A02 Cryptographic Failures — « Mes secrets ne sont pas si secrets »

L'idée simple. Les données sensibles (mots de passe, numéros de carte, données de santé) sont mal protégées. Soit elles ne sont pas chiffrées, soit elles sont chiffrées avec une méthode qui ne protège plus grand-chose en 2026.

Un scénario. Un site stocke les mots de passe hashés en MD5 (un algorithme des années 90, cassé depuis 20 ans). Un attaquant vole la base de données et retrouve les mots de passe originaux en quelques heures grâce à des tables pré-calculées. Autre variante : le site ne force pas HTTPS, donc les mots de passe circulent en clair quand un utilisateur se connecte depuis un WiFi public.

La défense. Utiliser les algorithmes recommandés en 2026 : Argon2id (ou bcrypt en fallback) pour les mots de passe, AES-256-GCM pour le chiffrement symétrique, HTTPS partout avec TLS 1.2 minimum et idéalement TLS 1.3.

3.3 A03 Injection — « Le serveur prend ma donnée pour une instruction »

L'idée simple. L'application mélange ce que tape l'utilisateur (données) avec les commandes qu'elle envoie à la base de données, au système ou à un autre composant. L'attaquant glisse alors une commande malveillante dans un champ prévu pour une donnée.

Un scénario. Sur un formulaire de recherche, je tape : ' OR '1'='1 à la place de mon nom. L'application construit une requête SQL qui devient SELECT * FROM users WHERE name='' OR '1'='1' — condition toujours vraie — et me renvoie la liste complète des utilisateurs. C'est une SQL Injection, la plus célèbre des injections. Variantes : Cross-Site Scripting (XSS) où on injecte du JavaScript, Command Injection où on injecte une commande shell, LDAP Injection, NoSQL Injection.

La défense. Requêtes paramétrées (prepared statements) systématiques — jamais de concaténation d'input utilisateur dans une requête. Les frameworks modernes (Django ORM, Rails ActiveRecord, Spring Data, Laravel Eloquent) le font nativement. Côté XSS : échapper tout ce qu'on affiche dans une page selon le contexte (HTML, attribut, JavaScript, CSS), et utiliser une Content Security Policy (CSP) stricte.

4. Les 3 du milieu : design, config, composants (A04-A06)

4.1 A04 Insecure Design — « Le plan est mauvais dès le départ »

L'idée simple. Contrairement aux catégories précédentes qui sont des bugs de code, celle-ci vise les défauts architecturaux. La faille est dans le schéma de conception, pas dans une ligne de code précise. On peut patcher pendant des années, le problème reste.

Un scénario. Un site d'e-commerce permet à n'importe qui d'acheter un code promo en quantité illimitée, qui se cumule sans limite avec d'autres codes. Résultat : prix final négatif, le site crédite l'acheteur. Ce n'est pas un bug de code, c'est un défaut de conception : personne n'a prévu ce cas dans les règles métier.

La défense. Threat modeling dès la phase de design (méthodologie STRIDE, PASTA, ou LINDDUN pour la vie privée). Lister les menaces possibles avant d'écrire la première ligne de code, prévoir des règles métier défensives (quantité maximale, limite de temps, plafonds, validation croisée).

4.2 A05 Security Misconfiguration — « Le produit est bon, l'installation est bancale »

L'idée simple. Le logiciel ou le framework est sécurisé par défaut, mais l'équipe qui l'a installé a laissé des options dangereuses activées, des mots de passe par défaut, ou des fonctions de debug accessibles en production.

Un scénario. Une application Django est déployée avec DEBUG=True. Un visiteur déclenche une erreur : la page d'erreur affiche la stack trace complète, les variables d'environnement incluant les credentials de la base de données, et une console interactive Python en ligne. Autres exemples classiques : compte admin/admin non changé, fichier .env exposé, interface d'administration /admin accessible publiquement, CORS configuré avec Access-Control-Allow-Origin: *.

La défense. Hardening systématique selon les CIS Benchmarks de la technologie utilisée. Audit de configuration avant mise en production. Headers de sécurité standards : X-Content-Type-Options, X-Frame-Options, Referrer-Policy, CSP, HSTS. Principe deny by default sur toutes les fonctions.

4.3 A06 Vulnerable and Outdated Components — « Des pièces détachées défectueuses »

L'idée simple. Une application moderne est construite à 80-90 % avec des bibliothèques tierces (npm, PyPI, Maven, NuGet). Si l'une de ces bibliothèques a une vulnérabilité connue et qu'on ne l'a pas mise à jour, l'application hérite de cette faille.

Un scénario. En décembre 2021, une vulnérabilité critique a été découverte dans la bibliothèque Java Log4j utilisée par des millions d'applications (CVE-2021-44228, surnommée Log4Shell, score CVSS 10.0 — le maximum). Les organisations qui ne l'ont pas patchée dans les 72 heures ont été massivement exploitées. Autres exemples récents : MOVEit en 2023 (CVE-2023-34362, exploitée par le groupe ransomware Cl0p), xz-utils en mars 2024 (CVE-2024-3094, tentative de backdoor dans la supply chain Linux).

La défense. Maintenir un SBOM (Software Bill of Materials, la liste exhaustive des composants utilisés). Utiliser un outil de SCA (Software Composition Analysis) : Snyk, Dependabot, Renovate, Dependency-Track. Politique de patching avec SLA : < 72 h pour CVSS ≥ 9, < 30 jours pour CVSS ≥ 7.

5. Les suivantes : auth, intégrité, logs (A07-A09)

5.1 A07 Identification and Authentication Failures — « La porte d'entrée est faible »

L'idée simple. Le mécanisme par lequel les utilisateurs prouvent qui ils sont est mal conçu ou mal implémenté. On peut se connecter sans être le bon utilisateur, ou deviner un mot de passe trop facilement, ou voler une session.

Un scénario. Un site n'a pas de rate limiting sur le formulaire de connexion. Un attaquant lance credential stuffing : il teste 10 millions de combinaisons email/mot de passe volées sur un autre site. Si 0,1 % des utilisateurs de ce site utilisent aussi ce mot de passe, il récupère 10 000 comptes en quelques heures. Autres scénarios : absence de MFA (Multi-Factor Authentication), token de session prédictible, reset de mot de passe via un lien qui n'expire jamais, JWT signé avec HS256 et un secret faible crackable en 10 minutes.

La défense. MFA obligatoire sur les comptes sensibles, idéalement avec FIDO2/passkeys plutôt que SMS. Rate limiting sur les endpoints d'authentification (5 tentatives/minute max). Politique de mots de passe NIST SP 800-63B (longueur minimum 12, pas de complexité imposée, vérification contre les leaks). Tokens de session cryptographiquement aléatoires.

5.2 A08 Software and Data Integrity Failures — « Je fais confiance à ce que je ne devrais pas »

L'idée simple. L'application fait confiance à des données ou des composants sans vérifier leur intégrité. L'attaquant intercepte ou substitue ces données pour modifier le comportement.

Un scénario. Un site fetche une bibliothèque JavaScript depuis un CDN sans vérifier son empreinte cryptographique (Subresource Integrity, SRI). Le CDN est compromis, la bibliothèque est remplacée par une version trojanée qui vole les mots de passe des utilisateurs. Autre scénario : une application accepte un objet sérialisé venant de l'utilisateur (désérialisation non sécurisée Java, pickle Python, PHP unserialize) qui contient une chaîne gadget capable d'exécuter du code arbitraire sur le serveur.

La défense. SRI pour toutes les ressources chargées depuis des CDN. Signature cryptographique des mises à jour et des builds (Sigstore, minisign). Jamais de désérialisation d'objet provenant d'une source non contrôlée ; préférer des formats de données comme JSON qui ne peuvent pas contenir de code.

5.3 A09 Security Logging and Monitoring Failures — « L'alarme ne sonne pas »

L'idée simple. L'application ne journalise pas les événements critiques, ne surveille pas les anomalies, ou ne déclenche pas d'alerte quand quelque chose cloche. Conséquence : une attaque peut durer des semaines avant d'être détectée.

Un scénario. Un attaquant compromet un compte utilisateur, extrait toutes les données pendant 3 mois, puis chiffre la base en ransomware. Post-mortem : aucun log des connexions administrateur, aucun log des exports massifs, aucune alerte sur les patterns anormaux. Le chiffre moyen 2023-2024 selon le rapport IBM Cost of a Data Breach : 204 jours pour détecter une breach, 73 jours supplémentaires pour la contenir.

La défense. Logger tous les événements de sécurité (login success/failure, changement de privilège, action admin, export de données). Centraliser les logs dans un SIEM (Security Information and Event Management) avec rétention minimum 12 mois. Définir des règles d'alerte sur les patterns suspects (MITRE ATT&CK), vérifier que les alertes parviennent à des humains qui peuvent agir.

6. La dernière : SSRF (A10)

6.1 A10 Server-Side Request Forgery — « Je fais travailler le serveur pour moi »

L'idée simple. L'application permet à un utilisateur de fournir une URL que le serveur va fetcher (pour générer une prévisualisation de lien, importer un fichier, envoyer un webhook). L'attaquant fournit une URL pointant vers une ressource interne que lui-même ne peut pas joindre depuis l'extérieur, et le serveur la fetche à sa place.

Un scénario. Une application offre une feature « Importer une image depuis URL ». L'utilisateur fournit http://169.254.169.254/latest/meta-data/iam/security-credentials/my-role — une adresse spéciale AWS qui, depuis une instance EC2, renvoie les credentials IAM temporaires de l'instance. Le serveur fetche l'URL, retourne les credentials dans la réponse (ou dans un message d'erreur verbeux), et l'attaquant peut maintenant agir en tant que serveur. Avec ces credentials, il peut souvent accéder à d'autres services cloud.

La défense. Allowlist stricte des URLs autorisées (domaines connus, pas d'IP privée, pas de localhost). Interdire les IPs de la plage 169.254.0.0/16 (link-local, métadonnées cloud), 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918 privées). Sur AWS, forcer IMDSv2 (Instance Metadata Service v2) qui exige un token de session et bloque les SSRF classiques. Utiliser un proxy dédié pour les requêtes sortantes utilisateur.

7. Comment utiliser le OWASP Top 10 en équipe

Le Top 10 n'est pas une checklist à cocher, c'est une grille de lecture et un langage commun.

7.1 Pour un développeur

  • Pendant le dev : avant chaque feature touchant à l'authentification, aux données sensibles, aux inputs utilisateur, se poser la question « quelle(s) catégorie(s) OWASP pourraient s'appliquer ici ? »
  • En revue de code : les commentaires de code review peuvent référencer les catégories : « A01 — vérification d'autorisation manquante ligne 87 », « A03 — concaténation SQL directe à revoir avec prepared statement ».
  • Ressources à connaître : OWASP Cheat Sheet Series (100+ fiches pratiques par sujet), OWASP Proactive Controls v3.

7.2 Pour un chef de projet / product manager

  • Dans les user stories : ajouter systématiquement un critère « Non-functional : aucune vulnérabilité OWASP Top 10 majeure introduite » avec test associé.
  • Arbitrage priorités : un finding A01 ou A03 se traite en sprint courant, pas au trimestre prochain.

7.3 Pour un RSSI ou responsable sécurité PME

  • Cadrer un pentest : exiger une couverture explicite des 10 catégories dans la proposition, pas un scan générique.
  • Dashboard exécutif : reporter mensuellement le nombre de findings OWASP par catégorie pour visualiser les tendances.
  • Formation : plan annuel avec au moins une formation OWASP Top 10 par développeur (plateforme SecureFlag, HackEDU, ou bootcamp interne).

7.4 Pour un apprenant en reconversion

Ordre d'apprentissage pratique recommandé (en labs) :

  1. A03 Injection : SQL injection sur DVWA, XSS sur HackTheBox Starting Point.
  2. A01 Broken Access Control : IDOR et privilege escalation sur PortSwigger Web Security Academy.
  3. A07 Authentication : bypass, JWT, session management.
  4. A02 Cryptographic Failures : hashes faibles, TLS mal configuré.
  5. A10 SSRF : PortSwigger SSRF labs.
  6. A06 Vulnerable Components : exploitation Log4Shell dans un lab dédié.

Pour approfondir, voir la roadmap AppSec qui structure le parcours complet sur 9-12 mois, la roadmap API security pour le pendant API, et la roadmap secure coding pour l'angle développeur.

Points clés à retenir

  • OWASP Top 10 Web 2021 = version stable en 2026, 2025 RC1 en draft. 10 catégories A01 à A10.
  • Trois catégories prioritaires à connaître avant tout : A01 Broken Access Control (la plus fréquente), A03 Injection (la plus célèbre), A07 Authentication (la porte d'entrée).
  • Chaque catégorie = une idée simple + un scénario concret + une défense principale. Pas besoin de mémoriser, besoin de comprendre.
  • Top 10 = langage commun entre dev, PM, RSSI, pentesters, auditeurs. Utilisé dans les rapports, les cahiers des charges, les formations.
  • Ne pas confondre Top 10 Web, Top 10 API Security, Top 10 Mobile, Top 10 LLM Applications — référentiels distincts maintenus par OWASP.
  • Apprentissage pratique via PortSwigger Web Security Academy (gratuit), HackTheBox, TryHackMe, DVWA — pas uniquement en lecture théorique.
  • En équipe : Top 10 référencé dans les revues de code, les user stories, les cahiers des charges pentest, les dashboards RSSI.

Questions fréquentes

  • Qu'est-ce que le OWASP Top 10 en quelques mots ?
    Le OWASP Top 10 est la liste des 10 catégories de vulnérabilités les plus critiques qui peuvent affecter une application web. C'est un classement consensuel maintenu depuis 2003 par la fondation OWASP (Open Worldwide Application Security Project), mis à jour tous les 3-4 ans sur la base de données agrégées de milliers d'applications testées. Version stable en 2026 : OWASP Top 10 Web 2021. Version 2025 RC1 en draft. Chaque catégorie couvre un type de faille, avec ses mécanismes d'exploitation, ses impacts et ses défenses recommandées. Il sert de référence commune aux développeurs, pentesters, RSSI, formateurs et auditeurs dans le monde entier. Ne pas le connaître, c'est comme conduire sans connaître le Code de la route.
  • À qui s'adresse cet article 'expliqué simplement' ?
    Cet article est écrit pour 4 profils typiques. 1) Le développeur junior qui vient d'arriver dans une équipe et doit comprendre ce que son tech lead appelle 'XSS' ou 'IDOR' sans perdre la face. 2) Le chef de projet IT non-cyber qui arbitre les priorités sécurité dans ses user stories et doit comprendre ce qui est sérieux ou pas. 3) Le RSSI d'une PME qui doit vulgariser auprès du COMEX ou de la DSI l'enjeu d'un audit en cours. 4) L'apprenant en reconversion cybersécurité en début de parcours qui cherche les concepts de base avant d'attaquer la pratique. L'article privilégie les analogies du quotidien sur le jargon. Pour un traitement technique détaillé, voir la ressource d'introduction OWASP Top 10 complémentaire.
  • Quelle vulnérabilité du OWASP Top 10 est la plus fréquente en 2026 ?
    Broken Access Control (A01) est la catégorie #1 depuis 2021 en fréquence : 3,81 % des applications testées présentent au moins une occurrence, soit 318 000+ occurrences CWE documentées. En CVE publiées, l'injection SQL cumule 62 445 CVE selon les données OWASP 2025. En CWE Top 25 MITRE 2025 (classement complémentaire), Cross-Site Scripting (CWE-79) reste #1 en fréquence d'apparition annuelle dans les CVE. Ces trois vulnérabilités (Broken Access Control, SQL Injection, XSS) forment le socle à connaître en priorité absolue, tant en défense qu'en détection.
  • Faut-il tout mémoriser par cœur ?
    Non. L'objectif 2026 n'est pas de réciter les 10 catégories comme une leçon, mais de savoir 3 choses pour chacune. 1) Quelle est l'idée générale de la faille (tu peux l'expliquer en 2 phrases à un collègue). 2) Comment elle se traduit concrètement dans le code ou la configuration de ton application. 3) Quelle est la ligne de défense principale. Le tableau synthétique de cet article sert de repère opérationnel. Pour les cas rares ou les détails techniques, le site owasp.org fournit le détail complet avec exemples et CWE mappés.
  • OWASP Top 10 Web et OWASP Top 10 LLM ou API, c'est la même chose ?
    Non, ce sont des familles distinctes maintenues par OWASP. OWASP Top 10 Web (version 2021 stable) couvre les applications web classiques (formulaires, backoffices, sites e-commerce). OWASP API Security Top 10 2023 couvre spécifiquement les APIs REST et GraphQL, avec ses propres catégories (API1 BOLA, API2 Broken Authentication, API10 Unsafe Consumption of APIs). OWASP Top 10 for LLM Applications 2025 couvre les applications d'IA générative (LLM01 Prompt Injection, LLM04 Data and Model Poisoning). OWASP Mobile Top 10 2024 couvre iOS et Android. Un architecte moderne doit connaître les 4 référentiels pour couvrir une stack typique 2026 : web + API + mobile + LLM.

Écrit par

Naim Aouaichia

Expert cybersécurité et fondateur de Zeroday Cyber Academy

Expert cybersécurité avec un master spécialisé et un parcours hybride : développement, DevOps, DevSecOps, SOC, GRC. Fondateur de Hash24Security et Zeroday Cyber Academy. Formateur et créateur de contenu technique sur la cybersécurité appliquée, la sécurité des LLM et le DevSecOps.