L'autre soir, j'étais en train de déboguer une API pour une plateforme de réseautage social quand soudain l'alarme de surveillance s'est déclenchée - des dizaines de milliers de requêtes par seconde étaient en train d'affluer et d'assécher le serveur. Et devinez quoi ? Il ne s'agit pas d'une attaque complexe, mais d'un simple script d'enfant appelant frénétiquement l'interface de connexion et essayant de craquer par force brute le mot de passe de l'utilisateur. De nos jours, les API sont devenues la viande et les pommes de terre des pirates, en particulier les applications sociales, les données des utilisateurs, l'interaction fréquente, un peu d'inattention sera poignardée.
Un CDN social à haute défense n'est pas juste pour le spectacle, il doit garder votre passerelle API comme un chien de garde. J'ai constaté que de nombreuses équipes pensaient pouvoir être tranquilles avec un CDN, mais qu'elles n'avaient pas la couche de protection de l'API et qu'elles avaient été balayées au point d'être refusées par leur mère. Ne croyez pas à ces absurdités de “protection en un clic”, la vraie sécurité doit commencer par l'authentification et la limite de fréquence, ou le CDN ne peut pas empêcher l'abus de l'API par l'initié.
Commençons par insister sur le caractère cruel des attaques contre les API. Les attaques les plus courantes sont les inondations DDoS, les injections SQL, le credential stuffing et même l'énumération des points de terminaison des API - les pirates analysent vos interfaces comme dans un supermarché, à la recherche de cibles faciles à pincer. Les applications sociales sont particulièrement vulnérables : l'interface de contenu généré par l'utilisateur (UGC), l'API de la liste d'amis, le push de messages sont autant de cibles. L'année dernière, un de mes clients utilisait CDN07, qui était assez stable, mais l'API ne fixait pas de limites, le crawler s'est emparé de centaines de milliers d'informations sur les utilisateurs, et a perdu le fond du ciel.
Pourquoi les CDN ordinaires ne peuvent-ils pas s'en charger ? Parce qu'ils se concentrent sur la mise en cache et la distribution du trafic, mais les demandes d'API sont souvent dynamiques et doivent être traitées en temps réel, elles ne peuvent donc pas être mises en cache. Un CDN à haute défense doit être comme un couteau suisse, avec une protection multidimensionnelle. Par exemple, le programme de CDN5, dont j'ai démonté l'architecture, en plus du nettoyage DDoS régulier, mais aussi de l'empreinte API intégrée, peut distinguer les utilisateurs normaux des robots, ce qui est dix fois plus intelligent qu'une simple liste noire d'adresses IP.
En ce qui concerne les solutions, il n'y en a que deux principales : l'authentification de l'API et la limitation de la fréquence. L'authentification permet de voir qui a un permis d'entrée, et la limitation de fréquence permet de l'empêcher de se promener. J'ai d'abord pulvérisé le forensics - beaucoup d'équipes avec Basic Auth osent aller en ligne, les mots de passe en texte clair, ce n'est pas une invitation à dîner pour les hackers ? Il faut au moins être sur OAuth 2.0 ou JWT, avec signature et limite de temps.
Le JWT est celui qui joue le plus, il est léger et flexible. Par exemple, les plateformes sociales l'utilisent pour gérer les sessions des utilisateurs, en intégrant dans le jeton l'identifiant de l'utilisateur et les permissions, les nœuds périphériques du CDN vérifient directement les signatures, réduisant ainsi la pression sur le back-end. Mais attention à ne pas insérer de données sensibles dans le payload, j'ai vu un ami écrire son mot de passe dans le token, et ensuite le token a été intercepté, et la communauté est morte directement. L'attitude correcte consiste à signer avec HS256 ou RS256, et la rotation des clés est régulièrement engagée.
Afficher un extrait de mon intergiciel judiciaire Node.js habituel et le placer dans la logique du bord du CDN pour qu'il s'exécute :
Ce code est placé dans la fonction edge du CDN5 a été testé, 100 000 requêtes par seconde sans halètement. Mais l'analyse légale légère n'est pas suffisante, la limite de fréquence est l'anti-abus de la mise à mort. De nombreuses API ont été explosées parce qu'il n'y a pas de limite de vitesse, les pirates peuvent prendre un pool d'IP proxy pour vous débusquer.
La limitation de fréquence doit être déployée en plusieurs couches : une couche à la périphérie du CDN, une couche au niveau de la passerelle API et une autre couche pour la logique d'entreprise. Je recommande l'algorithme du seau à jetons, la limitation du flux lisse peut également être utilisée pour gérer les pics. Par exemple, le CDN social de 08Host intègre une limitation dynamique du débit, un contrôle multidimensionnel basé sur l'IP, l'ID utilisateur et les points d'extrémité de l'API, ce qui est bien plus intelligent que des seuils fixes.
Exemple de configuration : modification des limites de fréquence dans Nginx, mise en place de nœuds périphériques CDN :
Cela permet de fixer un maximum de 10 requêtes par IP et par seconde, avec des rafales permettant à 20 d'entre elles de passer directement, et l'excès de traitement différé. J'ai aidé une application sociale à ajuster ce paramètre, les attaques d'API ont chuté de 90%, l'utilisateur ne l'a pas perçu. Mais ne copiez pas ah, selon l'ajustement de l'entreprise - la limite de l'interface d'enregistrement est stricte, le téléchargement d'images peut être assoupli.
Le point fort de CDN5 est l'intégration du WAF et de la gestion des API, j'ai testé leur chaîne d'authentification supportant OAuth et JWT out-of-the-box, inquiétant. 08Host bowl bon marché, la fréquence limite la flexibilité de configuration, adapté pour le démarrage d'applications sociales. Je ne suis pas sûr que vous serez en mesure de le faire.
Enfin : la sécurité de l'API n'est pas une question à régler une fois pour toutes, elle doit être surveillée en permanence. J'ai enfoui des points dans les logs du CDN, l'analyse en temps réel des modèles de demande, les anomalies immédiatement des alertes. Les applications sociales, en particulier, pour empêcher les crawlers “amicaux” - ils se font passer pour des utilisateurs normaux, ralentissent l'exploration des données, les restrictions de fréquence doivent utiliser l'algorithme de la fenêtre glissante pour les traiter.
En bref, la protection des API est comme une relation : il faut à la fois faire confiance et vérifier. Un CDN à haute défense est votre première ligne de défense, mais l'authentification et les limites de vitesse sont essentielles. Si vous faites des erreurs, même le CDN le plus cher n'est plus qu'un tigre de papier. N'oubliez pas que les pirates informatiques ne font pas de sieste et que vos API doivent être plus éveillées que le café.

