OWASP Top 10 expliqué avec des exemples pratiques

Security2026-10-24TryQuickToolBox

Vous avez construit une application web et vous vous inquiétez maintenant de la sécurité. L'OWASP Top 10 est la liste de référence des risques critiques de sécurité des applications web. Mais lire la liste est une chose ; comprendre comment ces risques se manifestent dans du code réel en est une autre. Cet article parcourt chaque catégorie de l'OWASP Top 10 avec des exemples pratiques et des étapes concrètes pour les atténuer.

1. Contrôle d'accès défaillant

Le contrôle d'accès défaillant se produit lorsque les utilisateurs peuvent agir en dehors des autorisations prévues. Par exemple, un utilisateur peut accéder au compte d'un autre utilisateur en modifiant un paramètre d'URL.

// Vulnérable : Aucune vérification que l'ID utilisateur demandé appartient à l'utilisateur authentifié
app.get('/api/user/:id', (req, res) => {
  const user = getUserById(req.params.id);
  res.json(user);
});

Atténuation : Appliquez des contrôles d'accès côté serveur. Utilisez un contrôle d'accès basé sur les rôles ou les attributs et refusez par défaut.

2. Défaillances cryptographiques

Les données sensibles comme les mots de passe et les numéros de carte de crédit doivent être chiffrées en transit et au repos. L'utilisation d'algorithmes faibles ou le codage en dur de secrets sont des pièges courants.

# Vulnérable : Utilisation de MD5 pour le hachage de mot de passe
import hashlib
hash = hashlib.md5(password.encode()).hexdigest()

Atténuation : Utilisez des algorithmes de hachage forts et salés comme bcrypt ou Argon2. Utilisez toujours HTTPS (TLS) pour les données en transit.

3. Injection

Les failles d'injection, comme l'injection SQL, se produisent lorsque des données non fiables sont envoyées à un interpréteur dans le cadre d'une commande ou d'une requête.

// Vulnérable : Concaténation de chaînes dans une requête SQL
$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "'";

Atténuation : Utilisez des requêtes paramétrées ou des requêtes préparées. Ne concaténez jamais directement les entrées utilisateur dans les requêtes.

4. Conception non sécurisée

La conception non sécurisée fait référence à une conception de contrôle manquante ou inefficace. Par exemple, un système de récupération de mot de passe qui révèle si un e-mail existe peut aider les attaquants.

Atténuation : Modélisation des menaces lors de la conception, utilisation de modèles de conception sécurisés et mise en œuvre de limitations de débit et d'autres contrôles.

5. Mauvaise configuration de sécurité

Cela inclut le fait de laisser des comptes par défaut activés, d'afficher des traces de pile aux utilisateurs ou de mal configurer les autorisations de stockage cloud.

# Vulnérable : Mode débogage activé en production
DEBUG = True

Atténuation : Durcissez les configurations, supprimez les fonctionnalités inutilisées et automatisez les vérifications de configuration.

6. Composants vulnérables et obsolètes

Utiliser des bibliothèques avec des vulnérabilités connues, c'est comme laisser une porte ouverte. Par exemple, une version obsolète d'une bibliothèque populaire peut avoir une faille d'exécution de code à distance.

Atténuation : Mettez régulièrement à jour les dépendances, utilisez des outils comme OWASP Dependency-Check et surveillez les CVE.

7. Défaillances d'identification et d'authentification

Une authentification faible permet aux attaquants de deviner des mots de passe ou de détourner des sessions.

// Vulnérable : Aucun verrouillage de compte après des tentatives échouées
if (passwordMatches) {
  loginUser();
} else {
  // affiche juste une erreur, pas de limitation de débit
}

Atténuation : Mettez en œuvre l'authentification multifacteur, appliquez des politiques de mots de passe forts et utilisez une gestion de session sécurisée.

8. Défaillances d'intégrité des logiciels et des données

Cette catégorie inclut l'utilisation de sources non fiables pour les mises à jour logicielles ou la désérialisation de données non fiables.

// Vulnérable : Désérialisation de données non fiables
$data = unserialize($_POST['data']);

Atténuation : Vérifiez les signatures numériques, utilisez des contrôles d'intégrité et évitez de désérialiser des données non fiables.

9. Défaillances de journalisation et de surveillance de la sécurité

Sans une journalisation adéquate, les violations passent inaperçues. Par exemple, ne pas consigner les tentatives de connexion échouées.

Atténuation : Consignez les événements liés à la sécurité, configurez des alertes et disposez d'un plan de réponse aux incidents.

10. Falsification de requête côté serveur (SSRF)

La SSRF se produit lorsqu'un attaquant peut amener le serveur à envoyer des requêtes vers des emplacements non prévus.

// Vulnérable : Récupération d'URL à partir d'une entrée utilisateur sans validation
fetch(req.query.url).then(...)

Atténuation : Validez et assainissez les URL, utilisez des listes blanches et limitez les autorisations du serveur.

Tableau comparatif

RisqueExempleAtténuation
Contrôle d'accès défaillantAccès aux données d'autres utilisateurs via manipulation d'URLAppliquer des contrôles d'accès côté serveur
Défaillances cryptographiquesStockage de mots de passe en texte clairUtiliser un hachage fort et TLS
InjectionInjection SQL via une entrée non assainieRequêtes paramétrées
Conception non sécuriséeLa récupération de mot de passe révèle l'existence de l'e-mailModélisation des menaces et modèles sécurisés
Mauvaise configuration de sécuritéMode débogage activé en productionDurcir les configurations
Composants vulnérablesBibliothèque obsolète avec CVE connueMises à jour régulières et vérifications des dépendances
Défaillances d'authentificationPas de limitation de débit sur la connexionMFA et politiques fortes
Défaillances d'intégritéDésérialisation de données non fiablesVérifier les signatures et éviter la désérialisation non sécurisée
Défaillances de journalisationAucun journal pour les connexions échouéesMettre en œuvre la journalisation et la surveillance
SSRFRécupération d'une URL fournie par l'utilisateurValider et mettre sur liste blanche les URL

FAQ

Qu'est-ce que l'OWASP Top 10 ?

L'OWASP Top 10 est une liste régulièrement mise à jour des risques de sécurité les plus critiques des applications web, publiée par l'Open Web Application Security Project (OWASP).

À quelle fréquence l'OWASP Top 10 est-il mis à jour ?

Il est mis à jour périodiquement pour refléter les menaces émergentes et les changements technologiques. La dernière mise à jour majeure date de 2021.

L'OWASP Top 10 suffit-il pour la sécurité ?

Non, c'est un point de départ. Un programme de sécurité complet comprend des pratiques de codage sécurisé, des tests réguliers et une surveillance continue.

Pour sécuriser davantage vos applications, envisagez d'utiliser des outils comme l'Analyseur de journaux Nginx pour surveiller et détecter les activités suspectes dans les journaux de votre serveur.