Secure-Dev
12 Novembre 202511 min1.1k
OWASP Top 10 : le guide du développeur web sécurisé
L'OWASP Top 10 liste les 10 risques de sécurité les plus critiques pour les applications web. Découvrez comment identifier et corriger ces vulnérabilités dans votre code.

Top 3 des risques critiques
Access Control
Contrôles d'accès défaillants
Injection
SQL, NoSQL, commandes OS
Cryptographic Failures
Chiffrement faible ou absent
L'OWASP Top 10 (Open Web Application Security Project) est la référence mondiale pour la sécurité des applications web. Cette liste est mise à jour tous les 3-4 ans pour refléter les menaces actuelles.
🔹 Les 10 Risques Critiques (Edition 2021)
1. Broken Access Control : Contrôles d'accès défaillants permettant l'accès à des ressources non autorisées.
Exemple : Modifier l'ID dans l'URL pour accéder au profil d'un autre utilisateur.
Protection : Vérifier les permissions côté serveur, utiliser des tokens anti-CSRF.
2. Cryptographic Failures : Chiffrement faible ou absent pour les données sensibles.
Exemple : Mots de passe stockés en clair, transmission HTTP sans HTTPS.
Protection : Bcrypt/Argon2 pour les passwords, TLS 1.3, chiffrement AES-256.
3. Injection : Injection SQL, NoSQL, commandes OS, LDAP via des entrées non validées.
Exemple : ' OR 1=1-- dans un champ de connexion.
Protection : Requêtes paramétrées (prepared statements), validation stricte.
4. Insecure Design : Absence de sécurité dès la conception (pas de threat modeling).
Exemple : Workflow d'achat permettant de modifier le prix côté client.
Protection : Security by Design, revues de sécurité dès la conception.
5. Security Misconfiguration : Mauvaise configuration des serveurs, frameworks, bases de données.
Exemple : Messages d'erreur détaillés en production, ports inutiles ouverts.
Protection : Hardening des serveurs, désactiver les fonctionnalités inutilisées.
6. Vulnerable Components : Utilisation de bibliothèques obsolètes avec des failles connues.
Exemple : Log4Shell (CVE-2021-44228) dans Log4j.
Protection : npm audit, Dependabot, mises à jour régulières.
7. Identification and Authentication Failures : Authentification et gestion de session faibles.
Exemple : Pas de rate limiting sur login, tokens prévisibles.
Protection : MFA, timeouts de session, tokens cryptographiquement sécurisés.
8. Software and Data Integrity Failures : Absence de vérification d'intégrité (CI/CD compromis).
Exemple : Plugin WordPress malveillant, dépendance npm compromise.
Protection : Subresource Integrity (SRI), signatures numériques.
9. Security Logging and Monitoring Failures : Logs insuffisants ou inexploitables.
Exemple : Attaque non détectée pendant des mois faute de logs.
Protection : Logging centralisé, alertes temps réel, SIEM.
10. Server-Side Request Forgery (SSRF) : Forcer le serveur à faire des requêtes malveillantes.
Exemple : Scanner le réseau interne via une fonction d'import d'URL.
Protection : Whitelist d'URLs, désactiver les redirections, segmentation réseau.
✅ Checklist du Développeur Sécurisé ✅
- Validation des entrées : Toute donnée utilisateur est malveillante jusqu'à preuve du contraire.
- Échappement des sorties : Encoder les données avant affichage (prévenir XSS).
- Requêtes paramétrées : Jamais de concaténation SQL avec des variables.
- Principe du moindre privilège : Comptes utilisateurs avec droits minimaux.
- Défense en profondeur : Plusieurs couches de sécurité (firewall, WAF, IDS).
- Fail secure : En cas d'erreur, refuser l'accès par défaut.
- Pas de sécurité par obscurité : Ne pas compter sur le secret du code.
🛠️ Outils pour Détecter les Vulnérabilités OWASP 🛠️
Analyse statique (SAST) :
- SonarQube : Détecte les failles dans le code source.
- ESLint Security Plugin : Règles de sécurité pour JavaScript.
- Bandit : Scanner de sécurité pour Python.
Analyse dynamique (DAST) :
- OWASP ZAP : Proxy d'interception pour tester les applications web.
- Burp Suite : Outil professionnel de pentesting.
- Nikto : Scanner de vulnérabilités web.
Dépendances :
- npm audit : Vérification des vulnérabilités npm.
- Snyk : Monitoring continu des dépendances.
- Dependabot : Mises à jour automatiques GitHub.
🔎 Conclusion 🔎
L'OWASP Top 10 est un guide indispensable pour tout développeur soucieux de la sécurité. En appliquant ces recommandations dès le début du développement (Shift Left Security), vous réduisez drastiquement les risques de compromission. La sécurité n'est pas une fonctionnalité mais un processus continu.
🔹 Les 10 Risques Critiques (Edition 2021)
1. Broken Access Control : Contrôles d'accès défaillants permettant l'accès à des ressources non autorisées.
Exemple : Modifier l'ID dans l'URL pour accéder au profil d'un autre utilisateur.
Protection : Vérifier les permissions côté serveur, utiliser des tokens anti-CSRF.
2. Cryptographic Failures : Chiffrement faible ou absent pour les données sensibles.
Exemple : Mots de passe stockés en clair, transmission HTTP sans HTTPS.
Protection : Bcrypt/Argon2 pour les passwords, TLS 1.3, chiffrement AES-256.
3. Injection : Injection SQL, NoSQL, commandes OS, LDAP via des entrées non validées.
Exemple : ' OR 1=1-- dans un champ de connexion.
Protection : Requêtes paramétrées (prepared statements), validation stricte.
4. Insecure Design : Absence de sécurité dès la conception (pas de threat modeling).
Exemple : Workflow d'achat permettant de modifier le prix côté client.
Protection : Security by Design, revues de sécurité dès la conception.
5. Security Misconfiguration : Mauvaise configuration des serveurs, frameworks, bases de données.
Exemple : Messages d'erreur détaillés en production, ports inutiles ouverts.
Protection : Hardening des serveurs, désactiver les fonctionnalités inutilisées.
6. Vulnerable Components : Utilisation de bibliothèques obsolètes avec des failles connues.
Exemple : Log4Shell (CVE-2021-44228) dans Log4j.
Protection : npm audit, Dependabot, mises à jour régulières.
7. Identification and Authentication Failures : Authentification et gestion de session faibles.
Exemple : Pas de rate limiting sur login, tokens prévisibles.
Protection : MFA, timeouts de session, tokens cryptographiquement sécurisés.
8. Software and Data Integrity Failures : Absence de vérification d'intégrité (CI/CD compromis).
Exemple : Plugin WordPress malveillant, dépendance npm compromise.
Protection : Subresource Integrity (SRI), signatures numériques.
9. Security Logging and Monitoring Failures : Logs insuffisants ou inexploitables.
Exemple : Attaque non détectée pendant des mois faute de logs.
Protection : Logging centralisé, alertes temps réel, SIEM.
10. Server-Side Request Forgery (SSRF) : Forcer le serveur à faire des requêtes malveillantes.
Exemple : Scanner le réseau interne via une fonction d'import d'URL.
Protection : Whitelist d'URLs, désactiver les redirections, segmentation réseau.
✅ Checklist du Développeur Sécurisé ✅
- Validation des entrées : Toute donnée utilisateur est malveillante jusqu'à preuve du contraire.
- Échappement des sorties : Encoder les données avant affichage (prévenir XSS).
- Requêtes paramétrées : Jamais de concaténation SQL avec des variables.
- Principe du moindre privilège : Comptes utilisateurs avec droits minimaux.
- Défense en profondeur : Plusieurs couches de sécurité (firewall, WAF, IDS).
- Fail secure : En cas d'erreur, refuser l'accès par défaut.
- Pas de sécurité par obscurité : Ne pas compter sur le secret du code.
🛠️ Outils pour Détecter les Vulnérabilités OWASP 🛠️
Analyse statique (SAST) :
- SonarQube : Détecte les failles dans le code source.
- ESLint Security Plugin : Règles de sécurité pour JavaScript.
- Bandit : Scanner de sécurité pour Python.
Analyse dynamique (DAST) :
- OWASP ZAP : Proxy d'interception pour tester les applications web.
- Burp Suite : Outil professionnel de pentesting.
- Nikto : Scanner de vulnérabilités web.
Dépendances :
- npm audit : Vérification des vulnérabilités npm.
- Snyk : Monitoring continu des dépendances.
- Dependabot : Mises à jour automatiques GitHub.
🔎 Conclusion 🔎
L'OWASP Top 10 est un guide indispensable pour tout développeur soucieux de la sécurité. En appliquant ces recommandations dès le début du développement (Shift Left Security), vous réduisez drastiquement les risques de compromission. La sécurité n'est pas une fonctionnalité mais un processus continu.
Principes de sécurité
Validation des entrées
Toute donnée utilisateur est suspecte
Requêtes paramétrées
Prévenir les injections SQL
Moindre privilège
Droits minimaux nécessaires
Défense en profondeur
Plusieurs couches de sécurité
Formation et audit OWASP Top 10
Nous formons vos équipes aux bonnes pratiques OWASP et auditons votre code pour détecter les vulnérabilités.