14 votes

Comment pourrais-je protéger une API contre les abus?

Salut tout le monde, je gère un site web d'hébergement d'images et je suis en train de concevoir une API pour celui-ci. Mon souci est que je ne veux pas que quelqu'un puisse faire quelque chose comme :

while(true) { 
    Upload();
}

et spammer/faire du DoS sur le site.

Ma solution actuelle consiste à limiter toutes les adresses IP à un certain nombre d'uploads par jour/heure. Je pense que cela fonctionnera bien pour les applications de bureau qui utiliseront l'API, mais pour les sites web qui souhaitent l'utiliser, tous les utilisateurs auront la même IP (celle du serveur).

Je suppose que la meilleure solution serait d'avoir des comptes utilisateurs qui s'authentifient avec l'API, puis de bannir chaque compte s'ils en abusent. Le problème, c'est que mon site n'a aucun compte utilisateur du tout, c'est entièrement anonyme.

Que puis-je faire d'autre ? Je voudrais garder les choses aussi ouvertes que possible, tout en ayant la possibilité de bannir les utilisateurs/IPs qui abusent clairement du service.

0voto

Eugene Osovetsky Points 4160

Comme d'autres l'ont mentionné sur ce fil de discussion, les clés API sont souvent la solution à adopter dans de telles situations. Le fait que votre site n'ait pas de comptes utilisateur n'a pas d'importance : une clé API identifie une application, et non un utilisateur. (En fait, si votre site avait des utilisateurs, vous auriez besoin de mécanismes distincts pour identifier l'application et l'utilisateur dans un appel API - c'est là qu'OAuth est très utile).

Si vous ne voulez pas créer votre propre processus d'inscription des développeurs, processus d'émission de clés API, code de régulation, etc., je vous encourage à jeter un coup d'œil à ma société, WebServius (www.webservius.com), qui fournit une couche de gestion API hébergée sur une API que vous fournissez.

0voto

tecla Points 525

Pour les APIs développées en .NET, vous pouvez utiliser API Protector .NET.

Voir cette réponse : https://stackoverflow.com/a/56075128/1679165

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X