Rate limiting és botvédelem
Hogyan korlátozd a túl sok kérést úgy, hogy közben ne büntesd a valódi felhasználókat? Rate limit kulcsok, időablakok és botvédelem.
Röviden
A rate limiting egy erőforrás-védelmi és abuse-control eszköz: meghatározza, hogy egy adott identitás vagy kulcs egy időablakban mennyi műveletet végezhet. Nem csak DDoS-ra való; login, jelszó-visszaállítás, keresés és drága API művelet külön limitet igényelhet.
Mit jelent a rate limiting és botvédelem?
A rate limiting egy erőforrás-védelmi és abuse-control eszköz: meghatározza, hogy egy adott identitás vagy kulcs egy időablakban mennyi műveletet végezhet. Nem csak DDoS-ra való; login, jelszó-visszaállítás, keresés és drága API művelet külön limitet igényelhet.
Mikor jön a 429?
Kérések ugyanabból az ablakból: 3
limit: 5
200 OK
A valós rate limiting kulcsa lehet IP, user ID, API key, endpoint vagy ezek kombinációja; elosztott rendszernél közös számláló vagy edge megoldás kellhet.
Hogyan működik a gyakorlatban?
A limit kulcsa lehet IP, user ID, API key, session vagy ezek kombinációja. Fixed window egyszerű, sliding window és token bucket simább viselkedést adhat. Elosztott rendszerben a számlálónak több instance között konzisztensen kell működnie vagy edge szinten kell kezelni.
- Külön limiteld a költséges és érzékeny endpointokat.
- 429 válasz és Retry-After segíthet a korrekt klienseknek.
- Login védelemnél user + IP jel jobb lehet, mint csak IP.
- Botdetektálásnál kerüld a törékeny egyetlen fingerprintre épülő logikát.
Gyakorlati fejlesztői szemlélet
A cél nem a „nulla bot”, hanem az üzleti kockázat csökkentése. Mérd a false positive arányt, és külön kezeld a scrapinget, credential stuffingot, brute force-t és normál burst forgalmat.
Gyakori hibák és félreértések
- Egyetlen globális IP limitet minden endpoint elé tenni.
- Rate limitinget autentikáció helyett használni.
- Az in-memory számlálót több szerveres környezetben globálisnak hinni.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy