In this article
Sécurité des applications web : risques et 9 bonnes pratiques
Alors que la praticité et l’accès à distance sont devenus essentiels pour les employés et les consommateurs du monde entier, la demande en applications web a elle aussi augmenté. Les applications web offrent les mêmes fonctionnalités que les applications de bureau ou natives, avec en plus la facilité d’accès depuis un navigateur. Elles sont également plus faciles à déployer sur différentes plateformes, ce qui permet aux entreprises d’élargir leur base d’utilisateurs. Malheureusement, les applications web ouvrent aussi des portes d’entrée aux attaquants, qui peuvent ainsi compromettre des bases de données et des systèmes clients.
En raison des risques de sécurité inhérents aux applications basées sur un navigateur — ainsi que des avancées dans les méthodes de développement et de déploiement —, les développeurs sont désormais davantage responsables de la sécurisation du code des nouvelles applications web qu’ils publient. Beaucoup ont longtemps appliqué le principe de la « sécurité par l’obscurité » : ils pensaient que les pirates n’iraient pas assez loin pour exploiter les vulnérabilités du code. Cela s’est avéré être une erreur. Les développeurs doivent aujourd’hui changer d’approche et prendre la responsabilité de sécuriser les applications avant leur publication, en tirant parti de solutions de sécurité des applications pour les aider à détecter et corriger les vulnérabilités.
Les principaux risques de sécurité des applications web
L’Open Web Application Security Project (OWASP) est une organisation à but non lucratif du secteur, qui œuvre à la promotion de la sécurité sur le web. Tous les quelques ans, elle publie une nouvelle liste des 10 principales vulnérabilités des applications web.
En 2021, cette liste comprenait :
Défaillances du contrôle d’accès – Présentes dans près d’une application sur 25 testées par l’OWASP.
Défaillances cryptographiques – À l’origine de l’exposition de données sensibles.
Injection – Les attaquants injectent du code malveillant dans des requêtes SQL ou des commandes.
Conception non sécurisée – Découle d’une conception médiocre ou inexistante des contrôles, par exemple lorsque des messages d’erreur contiennent des données sensibles.
Configuration de sécurité incorrecte – Un risque en hausse avec l’adoption de logiciels hautement configurables.
Composants vulnérables et obsolètes – Nécessitent des outils et des processus sophistiqués capables d’analyser les composants en développement et en production.
Défaillances d’identification et d’authentification – Passées de la deuxième à la septième place depuis la liste des 10 principaux risques de 2017, elles restent un vecteur d’attaque courant.
Défaillances d’intégrité des logiciels et des données – Nouvelle catégorie de la liste 2021, qui concerne le code ou l’infrastructure introduits sans vérification de leur intégrité.
Défaillances de journalisation et de surveillance de la sécurité – Difficiles à tester, elles sont pourtant essentielles à la détection des compromissions.
Falsification de requête côté serveur – Une faille peu fréquente, mais grave, par laquelle les attaquants détournent des requêtes URL afin de contourner les contrôles d’accès réseau.
Pour une analyse approfondie de ces vulnérabilités et des moyens d’y remédier, consultez notre analyse de l’OWASP Top 10
9 bonnes pratiques pour sécuriser votre application web
1. Intégrer la sécurité en amont du cycle de développement
La sécurité intégrée en amont remplace les processus et outils de sécurité traditionnels conçus pour les cycles de développement en cascade, en intégrant la sécurité le plus tôt possible dans le cycle de développement logiciel (SDLC). Les méthodes suivantes faciliteront cette transition :
Utiliser la modélisation des menaces
Intégrer les considérations de sécurité à la conception et à l’architecture du code
Tester le code pendant son écriture, plutôt que d’attendre que les applications soient en production
2. Injection et validation des entrées
L’injection regroupe des méthodes d’attaque qui consistent à insérer du code malveillant dans des navigateurs ou d’autres points d’entrée. L’injection SQL et le cross-site scripting en sont deux exemples : elles utilisent respectivement du code SQL malveillant et des scripts malveillants dans les interfaces web. Pour se protéger des attaques par injection, il convient de valider les entrées afin de n’accepter que des données au format correct et d’empêcher ainsi tout code malveillant de pénétrer dans le système.
3. Gestion de l’authentification des utilisateurs
Les « défaillances d’identification et d’authentification » figurant à la septième place de la liste OWASP Top 10 de 2021, l’authentification des utilisateurs est un aspect essentiel de la sécurité web. La gestion de l’authentification des utilisateurs contribue à renforcer les noms d’utilisateur et les mots de passe, et offre aux responsables de la sécurité de nombreuses options pour s’assurer que seules les personnes autorisées accèdent à leurs applications. L’authentification multifacteur, par exemple, exige que les utilisateurs prouvent leur identité à l’aide d’au moins deux types de facteurs d’authentification.
4. Chiffrement des données
Les défaillances liées à la cryptographie, ou à son absence, peuvent entraîner la compromission d’informations sensibles, ce qui place la cryptographie en deuxième position de l’OWASP Top 10. Le chiffrement des données au repos et en transit est une protection essentielle en cas de compromission. Les algorithmes de chiffrement sont généralement proposés dans des packages open source et déjà développés par des experts en cryptographie. Dans la pratique, le chiffrement consiste à appliquer des contrôles et des normes : chiffrer tous les flux internes et externes, utiliser des algorithmes à jour et imposer le chiffrement.
5. Détecter et corriger les erreurs de configuration
Les erreurs de configuration — comme le non-respect du principe du moindre privilège — facilitent l’accès de tiers aux données sensibles. La plupart sont introduites par une erreur humaine ; l’infrastructure en tant que code (IaC) et l’automatisation peuvent donc contribuer à les prévenir. En outre, des outils d’analyse comme Snyk IaC peuvent détecter et corriger les erreurs de configuration avant qu’elles n’atteignent les environnements de production.
6. Journalisation et audit
Cette pratique répond au risque numéro neuf de l’OWASP Top 10 : les défaillances de journalisation et de surveillance de la sécurité. Les données directes démontrant que les journaux et les audits peuvent prévenir les compromissions sont rares, mais leur détection et leur traitement restent indispensables. Cette catégorie englobe la journalisation d’événements comme les connexions et les transactions importantes, la surveillance des journaux pour repérer toute activité inhabituelle, ainsi que la création d’alertes ou de mesures de correction automatisées en cas de comportement suspect.
7. Pare-feu applicatifs web
Un pare-feu applicatif web (WAF) se place entre les clients et les serveurs web et sert de proxy pour le trafic qui les relie. En configurant des règles dans un WAF, vous pouvez protéger une ou plusieurs applications web contre les attaques courantes, comme l’injection.
8. Tests de sécurité dans votre CI/CD
Attendre la fin des pipelines CI/CD pour lancer des tests de sécurité — ou, pire encore, attendre que les applications web soient en production — entraîne des corrections coûteuses et chronophages. En intégrant les tests de sécurité à votre CI/CD, vous ferez gagner du temps et de l’argent à votre équipe, tout en lui épargnant bien des frustrations. Les outils d’automatisation permettent de le faire avec un minimum de perturbations pour les workflows des développeurs.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
9. Autorisation
La mise en œuvre de processus d’autorisation empêche l’élévation de privilèges, une attaque dans laquelle un utilisateur accède à une application, puis modifie ses privilèges ou son rôle pour élargir son accès. L’élévation de privilèges peut être détectée par des tests d’intrusion, atténuée en exécutant les applications avec le minimum de privilèges et empêchée par une configuration correcte des clés d’authentification.
Outils de test de la sécurité des applications web
Passons brièvement en revue les outils qui aident les développeurs à évaluer la sécurité des applications web et à corriger les problèmes.
SAST
Les outils d’analyse statique de la sécurité des applications (SAST), comme Snyk Code, analysent le code au regard de bonnes pratiques prédéfinies afin de repérer les motifs problématiques. Le SAST dépend du langage de programmation utilisé.
DAST
L’analyse dynamique de la sécurité des applications (DAST) examine les applications en cours d’exécution et ne dépend pas du langage utilisé.
Pour en savoir plus sur les différences entre SAST et DAST, consultez notre article de blog.
SCA
Les outils d’analyse de la composition logicielle (SCA), comme Snyk Open Source, analysent les dépendances de code tierces dans les applications web. Le développement d’applications modernes faisant largement appel aux bibliothèques open source, le SCA est un outil efficace dans l’arsenal d’une équipe de sécurité.
Tests d’intrusion
Les tests d’intrusion, une pratique du piratage éthique, visent à détecter et à traiter les vecteurs d’attaque susceptibles d’être utilisés pour compromettre une application web. Certaines réglementations, notamment la norme PCI DSS, imposent des tests d’intrusion réguliers, vivement recommandés pour toutes les applications web.
RASP
L’autoprotection des applications à l’exécution (RASP) est une technologie intégrée aux applications qui surveille leur comportement pour vérifier qu’il correspond à ce qu’elles sont censées faire. Elle complète les technologies périmétriques comme les WAF, mais peut ne pas détecter certaines méthodes d’attaque reposant sur l’authentification ou l’autorisation. Pour être pleinement efficace, la RASP doit être utilisée avec d’autres outils comme le SAST et le SCA.
Comment Snyk vous aide à développer des applications web sécurisées
La plateforme de sécurité destinée aux développeurs de Snyk réunit les outils Snyk Open Source, Snyk Code, Snyk Container et Snyk IaC sur une seule et même plateforme. Les développeurs d’applications web peuvent intégrer Snyk à leurs workflows existants pour analyser le code et les composants open source afin d’y détecter les vulnérabilités et erreurs de configuration. Notre vaste base de données de renseignements sur les vulnérabilités, la plus complète du marché, est constituée par les experts en sécurité de Snyk.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
Pour en savoir plus sur la sécurité des applications web, consultez ces articles :
La sécurité des applications expliquée : outils et tendances pour 2023
Tests de sécurité des applications : réponses aux principales questions | Snyk
Évaluation de la sécurité des applications : 5 étapes clés | Snyk
Foire aux questions sur la sécurité des applications web
Qu’est-ce que la sécurité des applications web ?
La sécurité des applications web repose sur un ensemble d’outils et de contrôles conçus pour protéger les applications web et les ressources qui leur sont associées. Elle comprend des processus permettant de détecter et de corriger les vulnérabilités des applications web, ainsi que des pratiques de développement sécurisé qui intègrent la sécurité dès la conception et jusqu’à la mise en œuvre.
Pourquoi la sécurité des applications web est-elle importante ?
La sécurité des applications web est importante pour deux raisons. Premièrement, les applications web peuvent permettre aux attaquants d’accéder à des informations sensibles dans vos bases de données. Deuxièmement, elles peuvent aussi servir à mener des attaques contre les utilisateurs de l’application.
Quels sont les trois risques les plus courants en matière de sécurité des applications ?
Selon l’OWASP Top 10 2021, les trois risques les plus courants en matière de sécurité des applications sont les défaillances de contrôle d’accès, les défaillances cryptographiques et les injections (notamment les injections SQL et les attaques de type cross-site scripting).
Comment sécuriser une application web ?
La sécurisation d’une application web commence dès les premières étapes du développement, en intégrant la sécurité dès la conception et en réalisant une modélisation des menaces pour veiller à ce que la sécurité soit prise en compte dès sa création. Au cours du processus de développement, les développeurs doivent utiliser des outils d’analyse pour détecter les vulnérabilités et les erreurs de configuration. À la fin de chaque cycle de publication, des tests d’intrusion doivent être effectués pour révéler les éventuelles vulnérabilités qui n’auraient pas été détectées auparavant.