La cle API publique d'une instance est embarquee dans les apps visiteur et lisible en clair dans le navigateur sur visitapp-web : elle est publique par construction. Les endpoints IA sont les seuls qui coutent de l'argent reel (jetons Gemini), et rien n'empechait d'y boucler jusqu'a vider le quota mensuel d'un client qui n'a rien fait. AddRateLimiter natif .NET 8, fenetre fixe 120 req/min, 429 avec Retry-After. Applique a chat ET translate : les deux consomment des jetons, et translate est atteignable avec la meme cle. Partition par instance parce que c'est l'instance qui porte le quota protege : l'abus chez un client ne doit pas ralentir les autres. Deux choix de placement qui ne sont pas cosmetiques. UseRateLimiter est apres UseCors — un 429 pose avant les en-tetes CORS s'affiche comme une erreur CORS et le client ne voit jamais le vrai code — et apres UseAuthentication, sinon la partition n'a pas le claim d'instance et tout le monde tombe dans le meme seau, ce qui transformerait la protection en panne globale. Jamais exerce a l'execution : le projet n'a aucune infrastructure de test HTTP et en monter une pour ce seul controle serait disproportionne. A verifier une fois par une boucle de 130 appels, qui doit basculer en 429 au 121e. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
C#
100%