Čo je Rate Limiting?
Rate limiting je technika obmedzovania počtu požiadaviek, ktoré klient môže poslať na server za určitý časový interval. Chráni API pred preťažením, DDoS útokmi a zneužívaním. Patrí medzi základné bezpečnostné opatrenia každého verejného API.
Definícia Rate Limiting
Čo je rate limiting
Rate limiting (po slovensky obmedzovanie rýchlosti požiadaviek) je technika používaná na kontrolu počtu požiadaviek, ktoré klient môže odoslať na server za daný čas. Používa sa na ochranu pred DoS/DDoS útokmi, zamedzenie web scrapingu a zabezpečenie spravodlivého prístupu k zdrojom pre všetkých používateľov.
Výskum ukazuje, že zombie stroj v rámci DDoS útoku dokáže generovať viac ako 20 HTTP GET požiadaviek za sekundu, zatiaľ čo legitímne používanie je výrazne nižšie.
Implementačné stratégie
- Fixed Window — pevný časový okno (napr. 100 požiadaviek za minútu), reset na začiatku každého okna
- Sliding Window — pohyblivé okno, ktoré plynulo sleduje požiadavky za posledných N sekúnd
- Token Bucket — „vedierko" s tokenmi, každá požiadavka spotrebuje token, tokeny sa dopĺňajú konštantnou rýchlosťou
- Leaky Bucket — požiadavky sa spracúvajú konštantnou rýchlosťou, prebytočné sa zahodia alebo zaradí do fronty
Na implementáciu sa často používa Redis alebo iná in-memory databáza. Server oznamuje limity cez HTTP hlavičky: X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Pri prekročení limitu server vráti stavový kód 429 Too Many Requests.
Praktický príklad
Príklad: Prevádzkujete verejné API pre počasie s bezplatným plánom.
Nastavíte rate limit na 60 požiadaviek za minútu na jeden API kľúč. Keď vývojár pošle 61. požiadavku, server odpovie kódom 429 Too Many Requests a hlavičkou X-RateLimit-Reset: 1710590460 (UNIX timestamp, kedy sa limit resetuje). Vývojár vie, že musí počkať alebo prejsť na platený plán s vyšším limitom.
Často kladené otázky
Čo je rate limiting a prečo je dôležitý?
Rate limiting obmedzuje počet požiadaviek na API za určitý čas. Je dôležitý na ochranu servera pred preťažením, DDoS útokmi a zabezpečenie spravodlivého prístupu pre všetkých používateľov.
Čo znamená chyba 429 Too Many Requests?
HTTP stavový kód 429 znamená, že ste prekročili povolený počet požiadaviek. Skúste počkať do resetu limitu (čas nájdete v hlavičke X-RateLimit-Reset) alebo znížte frekvenciu požiadaviek.
Ako sa rate limiting implementuje?
Najčastejšie pomocou in-memory databázy (Redis), kde sa pre každý API kľúč alebo IP adresu ukladá počítadlo požiadaviek. Populárne algoritmy sú Token Bucket, Sliding Window a Fixed Window.
Aký rate limit je štandardný pre verejné API?
Záleží na type API. Bežné limity sú 60-1000 požiadaviek za minútu pre bezplatné plány. Napríklad GitHub API má limit 60 požiadaviek/hodinu pre neautentifikované a 5 000 pre autentifikované požiadavky.
Súvisiace pojmy
Potrebujete pomôcť s webom?
Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.