Les applications web sont aujourd’hui la porte d’entrée privilégiée des attaquants : elles sont exposées sur Internet, manipulent des données sensibles et reposent sur de nombreux composants tiers. L’OWASP (Open Worldwide Application Security Project), communauté de référence en sécurité applicative, publie régulièrement un classement des risques les plus critiques, le fameux « Top 10 ». En voici une traduction en sept pratiques concrètes.
1. Contrôler les accès côté serveur, systématiquement
Le contrôle d’accès défaillant figure en tête des risques. Masquer un bouton dans l’interface ne protège rien : chaque requête doit être vérifiée côté serveur. L’utilisateur a-t-il le droit d’accéder à cette ressource précise, et non seulement à ce type de ressource ? Appliquez le principe du moindre privilège et refusez par défaut.
2. Se prémunir contre les injections
Injection SQL, injection de commandes, cross-site scripting : toutes exploitent des données utilisateur interprétées comme du code. Les parades sont connues et doivent devenir des réflexes.
- Utiliser des requêtes paramétrées ou un ORM, jamais de concaténation de chaînes.
- Valider les entrées selon une liste de valeurs autorisées.
- Encoder les sorties selon leur contexte (HTML, attribut, URL, JavaScript).
- Déployer une politique de sécurité du contenu (Content Security Policy).
3. Soigner l’authentification et les sessions
Proposez l’authentification multifacteur, au minimum pour les comptes à privilèges. Stockez les mots de passe avec un algorithme de hachage adapté (Argon2, bcrypt), limitez les tentatives de connexion et configurez correctement les cookies de session (attributs Secure, HttpOnly et SameSite). Lorsque c’est possible, appuyez-vous sur un fournisseur d’identité éprouvé plutôt que de tout développer vous-même.
4. Protéger les données en transit et au repos
Le chiffrement TLS doit être généralisé, avec l’en-tête HSTS. Les données sensibles stockées doivent être chiffrées, et les secrets (clés d’API, mots de passe de bases de données) ne doivent jamais figurer dans le code source : utilisez un coffre-fort de secrets.
5. Maîtriser ses dépendances
Une application moderne embarque des centaines de bibliothèques tierces. Chacune peut contenir une vulnérabilité. Tenez un inventaire de vos composants, automatisez l’analyse des vulnérabilités connues dans votre chaîne d’intégration continue et planifiez des mises à jour régulières.
La sécurité n’est pas une étape finale du projet : c’est une exigence qui se construit à chaque ligne de code.
6. Durcir la configuration
Messages d’erreur trop bavards, interfaces d’administration exposées, comptes par défaut, en-têtes de sécurité absents : les erreurs de configuration sont fréquentes et faciles à exploiter. Automatisez la configuration de vos environnements et vérifiez-la régulièrement.
7. Journaliser, surveiller et tester
Sans journaux exploitables, une intrusion peut passer inaperçue pendant des mois. Tracez les événements de sécurité (connexions, échecs, changements de droits), centralisez les journaux et définissez des alertes. Complétez par des revues de code orientées sécurité, des analyses automatisées et des tests d’intrusion avant chaque mise en production majeure.
Aucune de ces pratiques ne suffit seule, mais leur combinaison, intégrée dès la conception dans une démarche DevSecOps, réduit considérablement la surface d’attaque de vos applications et le coût des corrections.

