Je rate limiter is geen beveiligingsmaatregel
Een bot trok binnen enkele minuten alle gegevens van één paspoort uit mijn API.
Mijn rate limiter hield het niet tegen.
De limiet was 3.000 aanroepen per maand. Een volledige paspoortscan vereist slechts 195 aanroepen. De bot bleef onder mijn limiet en stal alles.
Rate limiting beschermt je infrastructuurkosten. Het beschermt niet je gegevens.
Als je deze twee ideeën door elkaar haalt, lek je je gegevens.
Rate limiters stellen één vraag: Kost deze client me op dit moment te veel geld?
Scrapers blijven opzettelijk onder die grens. Mijn scraper draaide op 25 verzoeken per minuut. Dat is een minimale belasting. Er zijn slechts 40.000 aanroepen nodig om mijn volledige dataset te kopiëren. Als een hacker veel gratis accounts gebruikt, zal geen enkele volumelimiet hen pakken.
Stop met kijken naar volume. Kijk naar identiteit, dekking en patroon.
Ik maakte twee fouten. Ten eerste logde ik het bron-IP niet. Een hacker kan zich gewoon opnieuw gratis aanmelden.
Los eerst je logs op. Voeg IP- en landkolommen toe aan je database. Gebruik het echte client-IP van Cloudflare in plaats van het remote adres. Hiermee kun je aanvallers blokkeren op de netwerklaag.
Ten tweede: pas je limieten aan.
Beperk niet alleen het aantal verzoeken per maand. Beperk hoeveel verschillende bestemmingen één paspoort per dag kan controleren. Een echte gebruiker controleert een paar bestemmingen. Een scraper probeert ze allemaal te controleren.
Een data sweep heeft een specifieke signatuur:
- Het is intensief.
- Het is sequentieel.
- Het dekt alles voor één bron.
Je kunt dit patroon detecteren door te kijken naar een sliding window van activiteit. Als één paspoort in korte tijd te veel bestemmingen raakt, markeer dit dan. Throttle die key of blokkeer deze onmiddellijk.
Nu reageer je op gedrag in plaats van alleen getallen te tellen.
Verdeel je strategie in twee taken:
- Rate Limiter: Bescherm je geld. Gebruik volumelimieten per key.
- Extraction Defense: Bescherm je gegevens. Gebruik identiteit, dekking en cadans.
Als je alleen een rate limiter hebt, heb je een beveiliging voor je facturatie. Je hebt geen beveiliging.
Bron: https://dev.to/mathis_higuinen_6db9b244c/your-rate-limiter-is-not-a-security-control-4b3f
