Une grande partie de l'Internet moderne repose sur les API pour fonctionner. La sécurité des API est le processus de protection des API contre les attaques et les violations de données.
Cet article s'articule autour des points suivants :
Contenu associé
Qu’est-ce qu’une API ?
Sécurité des applications web
Exploitation zero-day
Qu'est-ce qu'un appel d'API ?
point de terminaison d'API
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
Une interface de programmation d'application (API) est un moyen pour un logiciel d'interagir avec un autre logiciel. Si un programme ou une application possède une API, des clients externes peuvent lui demander des services.
La sécurité des API est le processus de protection des API contre les attaques. Tout comme les applications, les réseaux et les serveurs peuvent faire l'objet d'attaques, les API peuvent être victimes d'un certain nombre de menaces différentes.
La sécurité des API est un élément essentiel de la sécurité des applications web . La plupart des applications web modernes reposent sur des API pour fonctionner, et les API introduisent un risque supplémentaire pour une application en permettant à des parties extérieures d'y accéder. On peut comparer cette situation à celle d'une entreprise qui ouvre ses bureaux au public : la présence d'un plus grand nombre de personnes dans les locaux, dont certaines peuvent être inconnues des employés de l'entreprise, augmente le risque. De même, une API permet à des personnes extérieures d'utiliser un programme, ce qui introduit un risque supplémentaire pour l'infrastructure du service API.
Les stratégies de sécurité des API peuvent contribuer à atténuer ces risques et d'autres encore.
Des mesures d'authentification et d'autorisation fortes permettent de s'assurer que les données ne fuient pas et que seuls les clients autorisés effectuent des demandes d'API. La protection contre les attaques DDoS et la limitation du débit peuvent mettre fin aux attaques DDoS. La validation des schémas et l'utilisation d'un pare-feu d'application web (WAF) peuvent bloquer les exploits de vulnérabilité.
Limitation du débit limite le nombre de fois qu'une personne peut répéter une action dans un certain laps de temps. Si un client d'API dépasse le nombre de requêtes autorisées, la limitation de débit rejettera ou bloquera toute autre requête de sa part pendant un certain temps.
L'atténuation des DDoS permet de stopper les attaques DoS et DDoS. Lors d'une attaque DDoS, un attaquant tente de submerger une API avec un grand nombre de requêtes en un court laps de temps. Ces demandes proviennent souvent de plusieurs sources différentes.
La limitation du débit et l'atténuation des attaques DDoS sont cruciales pour les API, et ce pour plusieurs raisons :
Pour qu'un exploit de vulnérabilité fonctionne, les demandes d'API malveillantes doivent être structurées de telle sorte qu'elles amènent l'API à répondre d'une manière non prévue par ses architectes. Il existe plusieurs moyens pour les développeurs d'API de bloquer ces demandes malveillantes. Deux des plus importantes sont à connaître :
Le schéma d'une API décrit le comportement attendu d'une API : le type de demandes qu'elle doit recevoir et le type de réponses qu'elle doit fournir. Les demandes invalides qui ne sont pas conformes à ce schéma peuvent amener une API à se comporter de manière inattendue, ce qui peut entraîner une fuite de données. La validation du schéma identifie les demandes et les réponses non valides. En bloquant les réponses invalides, les développeurs d'API peuvent éviter certains types d'attaques et contribuer à prévenir les fuites de données.
Un WAF fonctionne comme un pare-feu traditionnel en ce sens qu'il bloque certaines demandes et réponses du réseau et en laisse passer d'autres. Il le fait sur la base d'un ensemble de règles : si une requête ou une réponse enfreint une règle, ou est conforme à une règle, elle est bloquée. Un WAF est déployé devant une API ou une application web et surveille le trafic HTTP .
Il est possible de configurer des règles WAF qui bloquent les modèles de demande et de réponse qui ciblent une vulnérabilité. Les règles WAF peuvent également bloquer les requêtes provenant de certaines adresses IP , ce qui contribue à stopper les attaques de bot et d'autres attaquants.
L'authentification garantit que les demandes d'API proviennent d'une source légitime. L'autorisation permet au serveur d'API de savoir si le client demandeur est autorisé à obtenir les données demandées.
Supposons qu'Alice construise une API et que Bob construise une application Web qui utilise l'API d'Alice. Lorsque l'application de Bob envoie une demande d'API à l'API d'Alice, il joint à la demande un label indiquant "this is from Bob". Cette étiquette authentifie la demande de Bob afin que le serveur API d'Alice sache qu'il doit traiter la demande comme légitime.
Le serveur API d'Alice vérifie également les privilèges dont dispose Bob. Si la demande de Bob concerne des données que l'API d'Alice a étiquetées ", Bob peut les voir,", le serveur répond à la demande. Cependant, l'API d'Alice peut avoir une section de données étiquetée "qui n'est pas destinée à Bob," et le serveur ne doit pas répondre à une demande pour ces données lorsque Bob est le demandeur. C'est pourquoi l'autorisation de est importante.
(En réalité, Bob joindrait une clé ou une autre forme d'authentification aux demandes d'API, et non pas une simple étiquette indiquant "que ceci provient de Bob.")
Il existe plusieurs méthodes d'authentification pour les API. Les plus courantes sont :
Le client se voit attribuer une clé - une chaîne de caractères unique que seuls lui et le service API connaissent. La clé est jointe à chaque demande d'API. Le serveur API vérifie la clé lorsqu'il reçoit une demande API pour s'assurer qu'elle provient d'un client authentifié.
L'inconvénient de cette méthode d'authentification est que si la clé est volée, un attaquant peut l'utiliser pour se faire passer pour un client légitime et peut alors mener diverses attaques. Il est important de chiffrer les demandes et les réponses à destination et en provenance d'une API à l'aide d'un protocole de chiffrement tel que Transport Layer Security (TLS) - de cette façon, la clé n'est pas exposée en clair lorsqu'elle traverse l'Internet.
Les demandes d'API peuvent utiliser des informations d'identification classiques (nom d'utilisateur et mot de passe) pour l'authentification via une méthode appelée authentification HTTP. Dans l'authentification HTTP, un nom d'utilisateur et un mot de passe sont codés et ajoutés à l'en-tête HTTP pour toutes les demandes d'API. Le serveur peut comparer ces informations d'identification aux informations d'identification des clients autorisés pour authentifier les demandes.
Cette approche s'accompagne de tous les défis normalement associés aux mots de passe : les mots de passe peuvent être perdus, divulgués, volés, devinés ou partagés avec des parties non fiables. Les mots de passe sont également sujets à des attaques par force brute ( credential stuffing et ), entre autres.
Au lieu d'exiger une authentification directe du client, un serveur d'API peut obtenir un jeton d'authentification d'un serveur d'authentification de confiance à l'aide du protocole OAuth . Pour utiliser l'API, l'utilisateur se connecte à un service tiers au lieu de se connecter directement à l'API. Comme l'approche par nom d'utilisateur et mot de passe, cette méthode d'authentification est vulnérable au "credential stuffing" et à d'autres attaques.
TLS est le protocole de chiffrement qui crée une connexion chiffrée et authentifiée entre le client et le serveur lors du chargement de pages web. TLS peut également vérifier et authentifier les deux extrémités d'une connexion API.
Dans le cas de TLS mutuel (mTLS), le client et le serveur disposent tous deux d'un certificat TLS . Ils s'authentifient mutuellement à l'aide de ces certificats, garantissant ainsi que les deux sont bien ceux qu'ils prétendent être, sans avoir besoin de recourir à des mots de passe ou à d'autres méthodes d'authentification.
Toutefois, mTLS peut être difficile à mettre en œuvre : tous les points de terminaison de l'API et les clients ont besoin de certificats TLS légitimes, ce qui peut être difficile à faire respecter et à maintenir.
Cloudflare API Shield permet d'activer plusieurs fonctions de sécurité API à partir d'un seul tableau de bord afin de se protéger contre les risques de sécurité API courants. API Shield comprend :