Back to Blog
product updates

Boti mu přes noc nastříleli fakturu za tisíce dolarů — jak se tomu vyhnout

Vývojář na Redditu dostal fakturu za tisíce dolarů kvůli botům. Podíval jsem se na svůj kód a zjistil, že jsem na tom stejně.

GoStylo Team
3 min read
Boti mu přes noc nastříleli fakturu za tisíce dolarů — jak se tomu vyhnout

Na Redditu jsem narazil na post od jednoho vývojáře. Spustil SaaS appku, která volala AI modely — podobně jako GoStylo. Ráno otevřel mail a čekala ho faktura za několik tisíc dolarů. Za jednu noc.

Boti. Stovky IP adres, každá v rámci free limitu, ale dohromady mu za pár hodin sežraly celý měsíční budget.

Podíval jsem se na svůj kód a zjistil jsem, že jsem na tom stejně.

Co bylo špatně

Rate limiting jsem měl postavený na fingerprintu — IP adresa plus pár hlaviček z prohlížeče. Každý fingerprint měl povolených 6 requestů za hodinu. Jenže bot s tisícovkou různých IP adres = tisíc fingerprintů = 6000 requestů za hodinu. A každý z nich volá AI model, za který platím.

Horší bylo, že 10 z 12 API endpointů nemělo vůbec žádný rate limit. Bot mohl spamovat databázi, vyčerpávat autentifikaci — a já bych se to dozvěděl, až když by přišla faktura.

Co jsem s tím udělal

Řešil jsem to po vrstvách. Ne jednu velkou ochranu, ale několik menších, kde každá chytí jiný typ útoku.

Middleware — ještě předtím, než se request dostane k jakémukoliv kódu. Limit 200 requestů za minutu na IP (člověk to nedosáhne, bot ano), blokování známých bot nástrojů podle User-Agent hlavičky a whitelist pro vyhledávače, abych si nezničil SEO. Plus caching na statických stránkách — když bot ťuká na blog tisíckrát, dostane tisíckrát tu samou cached stránku, server to vůbec nezatíží.

Rate limity na každém endpointu — prošel jsem je všechny a nastavil limity podle citlivosti. Veřejné endpointy 60 za hodinu per IP, autentifikované čtení 120, zápis 60, smazání účtu 5. Předtím tam nebylo doslova nic.

Bot scoring na transform endpointu — tohle je ten, který volá AI modely a stojí peníze. Každý request dostane skóre podle toho, jak moc vypadá jako bot. Vyplněný honeypot (skryté pole, které člověk nevidí, ale bot vyplní automaticky), chybějící kryptografický podpis z frontendu (= někdo volá API přímo), 5 requestů za 5 sekund z jednoho zdroje — každý signál přidá body. Nízké skóre zpomalí request, střední vyhodí CAPTCHA (vyřešíš jednou, máš pokoj 24 hodin), vysoké zablokuje.

Sledování nákladů — ne jen počet requestů, ale i kolik reálně stojí v dolarech. Bot nemusí posílat hodně requestů, stačí posílat dlouhé texty. Když fingerprint utratí hodinový budget, je konec.

Monitoring — každých 15 minut automatická kontrola trafficu. Když anonymní requesty dosáhnou 80% limitu, dostanu notifikaci. Nechci se o útoku dozvědět ráno.

Pro běžné uživatele se nic nezměnilo

Žádná CAPTCHA při normálním používání, žádné zpomalení. Pokud používáte GoStylo normálně, na nic z toho nenarazíte.


Ten Reddit post mě donutil podívat se na bezpečnost dřív, než by bylo pozdě. Radši strávit pár dní prevencí, než se ráno probudit s fakturou v tisících.

AI-Powered Writing

Ready to improve your writing?

Try Stylo for free and experience AI-powered writing assistance that adapts to your style.

Try Stylo Free
ochrana před botySaaS bezpečnostrate limitingAPI ochranaAI nákladyweb security

Related Posts