Guide de sécurité des API
UnInterface de programmation d'applications (API)est un type d'interface logicielle qui offre un service à d'autres logiciels ou applications
Il existe diverses utilisations ou applications du concept d'API, mais pour ce guide, le terme API est utilisé pour désigner les API Web, ce à quoi la plupart des gens pensent bien sûr lorsqu'ils entendent le terme API.
L'API Web est un concept de développement Web qui permet aux appareils clients d'accéder aux services sur un serveur Web à l'aide du protocole HTTP (Hypertext Transfer Protocol). Les protocoles API courants incluent les API gRPC de Google, les API GraphQL de Facebook, les API SOAP utilisant XML et les API RESTful utilisant JASON. Par exemple, l'API REST de Twitter permet aux développeurs d'accéder et d'interagir avec les données principales de Twitter telles que les données de recherche et de tendances.
Pourquoi la sécurité des API est importante

L’API est devenue un élément clé de l’innovation dans le monde actuel axé sur les applications. Que vous travailliez sur des applications mobiles, Web ou internes destinées à votre entreprise, vous compterez probablement sur des API pour faire fonctionner les choses. Qu'il s'agisse du gouvernement, des banques, du commerce de détail ou de l'IoT, les API constituent un élément essentiel des applications mobiles et Web modernes. Bien que l’utilisation d’une API apporte de nombreux avantages, elle comporte également des risques de sécurité inhérents. Par nature, les API augmentent la surface d’attaque d’une application et exposent l’application et les données internes sensibles aux attaquants. C'est pourquoi la sécurité des API est très importante.
Une API sécurisée peut garantir la confidentialité et l’intégrité des informations qu’elle traite provenant de clients et de serveurs externes. La sécurité des API est l'approche systématique adoptée par les organisations pour protéger les API contre les attaques. Comme les applications basées sur des API diffèrent des applications traditionnelles, la sécurité des API diffère également de la sécurité des applications Web traditionnelles. Tout comme les applications Web traditionnelles, les API possèdent également leur propre ensemble unique de vulnérabilités et de techniques d'attaque. Le Top 10 des API OWASP offre un aperçu utile des vulnérabilités courantes des API. La sécurité des API se concentre sur les stratégies et les solutions visant à atténuer les vulnérabilités uniques et les risques de sécurité associés aux API. Cela constitue un bon point de départ pour les organisations cherchant à améliorer leur posture de sécurité API.
Techniques d'attaque API courantes
Les API peuvent être attaquées et utilisées de différentes manières, mais les exemples les plus courants incluent :
- L'homme au milieu de l'attaque (MITM)Un attaquant peut agir comme un intermédiaire entre un jeton de session émettant une API vers un en-tête HTTP et un utilisateur. Si le pirate informatique parvient à intercepter ce jeton de session, cela lui accordera l’accès au compte de l’utilisateur, ce qui peut conduire à un accès non autorisé à des données sensibles.
- Attaques par injection d'APILes attaques par injection d'API sont courantes avec les applications qui ne respectent pas les pratiques de codage sécurisées. L'attaquant injecte du code malveillant dans votre application pour accéder aux ressources. Les exemples typiques incluent Injection SQL , injection JSON et scripts intersites (XSS)
- Attaque par déni de service distribué (DDoS)Une attaque DDoS sur une API Web tente de saturer sa mémoire en la surchargeant de plusieurs milliers de connexions en même temps. Les attaquants peuvent également le faire en envoyant une énorme quantité d’informations dans chaque requête.
- Fraude au piratage de compte Fraude par prise de contrôle de compte (ATO) implique qu'un acteur malveillant obtienne un accès non autorisé à un compte API et l'utilise à des fins personnelles. Après un vol d'identifiant ou même un Attaque XSS , un compte API peut être repris. Une fois que cela se produit, une violation de données est inévitable, ce qui peut être coûteux tant pour les entreprises que pour les particuliers.
- Exploitation des vulnérabilitésLes vulnérabilités sous-jacentes peuvent être exploitées par des acteurs malveillants, ce qui peut conduire à un accès non autorisé à des données sensibles. Les vulnérabilités courantes des API pouvant entraîner un accès non autorisé aux données incluent une autorisation au niveau de l'objet (BOLA), une authentification utilisateur interrompue, une exposition excessive des données et des vulnérabilités de logique métier, entre autres.
- Grattage de donnéesLe data scraping est une technique utilisée pour extraire des données d’une sortie lisible par l’homme provenant d’une autre application sur le Web. À mesure que les organisations mettent des ensembles de données à disposition via des API publiques, les acteurs malveillants peuvent interroger ces ressources de manière agressive pour récupérer des ensembles de données précieux. Le scraping de données est également effectué pour s'interfacer avec un système tiers qui ne fournit pas d'API plus pratique. Dans tous les cas, le grattage de données entraîne une augmentation du système je charge et perte de contrôle du contenu de l’information, entre autres.
Composants clés d'un bon programme de sécurité des API
Voici trois éléments clés d’un bon programme de sécurité des API :
1. Contrôle d'accès Les mesures de contrôle d'accès protègent les systèmes et les ressources API contre tout accès non autorisé en garantissant que toutes les applications, serveurs et utilisateurs qui consomment votre API sont ceux qui disposent des autorisations appropriées pour le faire. Les deux principaux moyens de contrôle d'accès sont l'authentification et l'autorisation. Pour que les utilisateurs ou les applications puissent accéder à une ressource, ils doivent d'abord prouver qu'ils sont ceux qu'ils prétendent être et disposer des informations d'identification, ainsi que des droits ou privilèges nécessaires pour effectuer les actions qu'ils demandent. Une bonne sécurité des API nécessite des mesures de contrôle d'accès strictes, notamment l'authentification multifacteur (MFA) pour gérer et contrôler l'accès aux applications et aux ressources.
2. Confidentialité et intégrité des données La confidentialité est l'assurance que les informations ne sont pas divulguées à des personnes, programmes ou processus non autorisés. Cela signifie que des mécanismes de contrôle doivent être en place pour dicter qui peut accéder aux données API et ce que le sujet peut en faire une fois qu'il y a accédé. Ces activités doivent être contrôlées, auditées et surveillées. Des exemples d'informations qui pourraient être considérées comme confidentielles sont les dossiers médicaux, les informations sur les comptes financiers, les codes sources et les secrets commerciaux. Certains mécanismes de sécurité qui assureraient la confidentialité sont, entre autres, le cryptage, les contrôles d'accès logiques et physiques et les vues de base de données.
De même, lorsqu’un mécanisme de sécurité assure l’intégrité, il protège les données API, ou une ressource, contre toute modification non autorisée. Si un quelconque type de modification illégitime se produit, le mécanisme de sécurité doit alerter l'utilisateur ou l'administrateur d'une manière ou d'une autre. Certains mécanismes de sécurité qui assureraient l'intégrité sont signatures numériques et cryptographie à clé publique .
3. Disponibilité des API La disponibilité est l'assurance que les systèmes et les ressources API doivent être disponibles rapidement pour les utilisateurs afin que la productivité ne soit pas affectée. La plupart des applications Web sont hébergées dans le cloud avec des intégrations à plusieurs autres services cloud et sur site. Votre système API doit être conçu de manière à garantir qu'il est toujours disponible pour répondre aux appels et qu'une fois l'exécution de l'appel commencée, il peut terminer le processus sans aucun problème de sécurité.
Ceci peut être réalisé grâce à des limites de débit, une haute disponibilité, une tolérance aux pannes et des mécanismes de récupération mis en place pour garantir la continuité de la disponibilité des ressources. Lorsque les API sont implémentées sans aucune limite quant au nombre d'appels que les consommateurs d'API peuvent effectuer, les attaquants peuvent submerger les ressources du système, conduisant ainsi à un déni de service (DoS). Vous pouvez également envisager des moyens de faire évoluer l'API sur plusieurs serveurs pour la rendre plus résiliente aux attaques DoS et confier le traitement des messages à un courtier de messages, qui conservera le message jusqu'à ce que l'API ait terminé son traitement.
Meilleures pratiques de sécurité des API
1. Intégrez la sécurité des API dans SDLC L'un des meilleurs moyens de développer une sécurité complète des API consiste à l'intégrer dans votre cycle de vie de développement logiciel (SDLC), de la planification au développement, en passant par les tests, la préparation et la production. L’utilisation d’outils et de règles de sécurité API ad hoc entraînera presque certainement des failles de sécurité et une exposition à des risques inutiles. Cela signifie adhérer dès le départ à des pratiques de codage sécurisées. OWASP fournit un document indépendant de la technologie qui définit un ensemble de logiciels généraux pratiques de codage de sécurité dans un format de liste de contrôle qui peut être intégré dans votre cycle de vie de développement logiciel. La mise en œuvre de ces pratiques atténuera les vulnérabilités des applications les plus courantes, y compris les vulnérabilités des API.
2. Évaluez régulièrement les vulnérabilités Les vulnérabilités font partie des problèmes de sécurité courants qui affectent les logiciels. Pour renforcer vos défenses contre les menaces, vous devrez régulièrement rechercher et corriger les vulnérabilités de votre API. Faites attention au Top 10 des API OWASP car il offre un aperçu utile des vulnérabilités courantes des API. L'évaluation des vulnérabilités et les tests de sécurité permettent aux fournisseurs d'identifier les domaines où leur API est vulnérable et de prendre les mesures correctives nécessaires pour combler les lacunes.
Un nombre croissant de fournisseurs adoptent des mesures de tests de sécurité afin de garantir que leurs applications et infrastructures critiques sont protégées contre les failles de sécurité. Plus les approches de test de sécurité d’une organisation sont étendues, meilleure est sa position globale en matière de sécurité. Standard techniques de tests de sécurité peut être utilisé pour tester et détecter les vulnérabilités des API et des applications Web.
3. Mettre en œuvre des mesures de contrôle d'accès Le contrôle d'accès permet aux organisations de gérer qui est autorisé à accéder aux données et aux ressources de l'API. L'un des éléments clés du contrôle d'accès est l'authentification et l'autorisation. Il existe plusieurs méthodes pour mettre en œuvre l'authentification et l'autorisation :
- Authentification de base : un utilisateur doit fournir un identifiant et un mot de passe.
- Authentification basée sur une clé API : un utilisateur a besoin d'un identifiant unique configuré pour chaque API.
- Authentification déléguée : l'authentification et l'autorisation sont déléguées à des fournisseurs d'identité (IdP) tiers.
OpenID et Auth0 sont des protocoles de délégation couramment utilisés pour gérer l'authentification et les autorisations. Il s'agit d'un cadre d'authentification basé sur des jetons qui permet aux services tiers d'accéder aux informations sans exposer les informations d'identification des utilisateurs. Le consommateur ne saisit pas ses informations d’identification mais donne à la place un jeton fourni par le serveur tiers. Il protège le consommateur car il ne divulgue pas ses informations d’identification, et le fournisseur d’API n’a pas besoin de se soucier de la protection des données d’autorisation, car il ne reçoit que des jetons.
4. Adopter le principe du moindre privilège Le principe du moindre privilège est l’idée selon laquelle un utilisateur, un programme ou un processus ne doit disposer que du strict minimum de privilèges essentiels pour remplir la fonction prévue. Cela signifie que les utilisateurs de l’API doivent disposer uniquement des autorisations pour les actions qu’ils sont autorisés à effectuer et rien de plus. Les autorisations peuvent être étendues si nécessaire, mais doivent également être révoquées lorsqu'elles ne sont plus utilisées. Pensez à diviser l’accès en différents rôles et à masquer les informations sensibles dans toutes vos interfaces. Afficher uniquement le moins d'informations possible dans les messages d'erreur. Moins vous partagez d’informations via les API, plus votre surface d’attaque et les risques de sécurité des API sont réduits.
5. Utiliser le cryptage Le cryptage dissimule les informations en les modifiant de manière à ce qu'elles apparaissent comme des données aléatoires. Cela le rend inintelligible pour les parties non autorisées. Le cryptage en lui-même n'empêche pas les interférences mais refuse le contenu intelligible à un intercepteur potentiel. Le chiffrement est une stratégie essentielle pour la sécurité des API car il permet de sécuriser le contenu envoyé et reçu via l'API. Les protocoles de chiffrement tels que TLS chiffrent les données en transit et rendent beaucoup plus difficile le fait que les données API sensibles finissent entre de mauvaises mains.
6. Surveiller et enregistrer les données pertinentes Il est recommandé de garder un œil sur les événements et les activités en cours sur votre API, de consigner les informations pertinentes sur le serveur et de conserver cet historique aussi longtemps qu'il est raisonnable. En cas de violation ou de compromission, vous pourrez extraire ces journaux et les auditer pour trouver des anomalies. Cela vous aide également à répondre aux exigences de conformité. Il y a beaucoup de serveurs et outils de surveillance des applications avec des tableaux de bord pour suivre votre consommation d'API. Pensez à déployer l'un de ces outils dans votre environnement pour une journalisation efficace.
7. Valider les paramètres d'entrée C'est une bonne idée de vérifier, filtrer et valider les entrées des utilisateurs sur votre serveur, surtout si elles sont très volumineuses, avant de les accepter. Cela vous aidera à déterminer si les paramètres sont sûrs et à minimiser votre risque d'exposition. La validation des schémas JSON et XML sont les deux outils les plus largement utilisés pour savoir si les paramètres sont sûrs ou non. La validation de schéma vérifie que les messages JSON ou XML sont conformes à la structure ou au format attendu par le service Web en validant ces requêtes par rapport aux schémas JSON ou XML. La validation du schéma JSON, par exemple, impose des contraintes sur la structure des données d'instance. La validation des paramètres permet également de minimiser le risque de SQL et Attaques par injection JSON .
8. Utilisez la passerelle API Une passerelle API est un outil qui se situe entre un client et un ensemble de services backend. Il agit comme un proxy inverse pour accepter tous les appels API, regrouper les différents services requis pour les exécuter et renvoyer le résultat approprié. L'utilisation d'outils de passerelle API tels qu'AWS API Gateway, Azure API Management, Mulesoft et Akamai est devenue une pratique courante pour la plupart des fournisseurs. Les API bien gérées sont moins vulnérables aux risques de sécurité et permettent aux développeurs de créer, publier, maintenir, surveiller et sécuriser facilement des API à n'importe quelle échelle. De plus, les outils de gestion des API vous aident à donner un sens à vos données API pour obtenir une meilleure compréhension et un avantage concurrentiel.
9. Implémenter la limitation de débit et la limitation du débit de l'API La limitation et la limitation du débit sont une stratégie permettant de limiter le trafic réseau. Il bloque ou limite la fréquence à laquelle les utilisateurs, les robots ou les applications qui abusent d'une propriété Web peuvent répéter une telle action dans un certain délai. par exemple, essayer de vous connecter à un compte. La limitation est appliquée côté serveur tandis que la limitation de débit est appliquée côté client. La limitation et la limitation du débit peuvent aider à protéger contre la surutilisation des API, à réduire la pression sur les serveurs Web et à arrêter certains types de programmes malveillants. activité du robot telles que les attaques par force brute, les attaques DoS/DDoS et le web scraping.

10. Utiliser le pare-feu API API Firewall est un micro-pare-feu léger qui fait office de passerelle de sécurité et de point d'entrée et de sortie unique pour tous les appels API. Les pare-feu API sont conçus pour protéger vos points de terminaison API dans les environnements cloud natifs. Il est recommandé de déployer votre pare-feu API dans une DMZ pour empêcher les attaques directes et filtrer le trafic avant de le transférer vers votre réseau de confiance.