Twój Rate Limiter to nie mechanizm bezpieczeństwa

Bot w kilka minut pobrał wszystkie dane jednego paszportu z mojego API.

Mój rate limiter go nie powstrzymał.

Limit wynosił 3000 wywołań miesięcznie. Pełne skanowanie paszportu wymaga tylko 195 wywołań. Bot trzymał się poniżej mojego limitu i ukradł wszystko.

Rate limiting chroni koszty Twojej infrastruktury. Nie chroni Twoich danych.

Jeśli pomieszasz te dwie koncepcje, doprowadzisz do wycieku danych.

Rate limitery zadają tylko jedno pytanie: Czy ten klient generuje dla mnie obecnie zbyt wysokie koszty?

Scrapery celowo trzymają się poniżej tej granicy. Mój scraper działał z prędkością 25 żądań na minutę. To minimalne obciążenie. Do skopiowania całego mojego zbioru danych potrzebowałby tylko 40 000 wywołań. Jeśli haker użyje wielu darmowych kont, żaden limit wolumenu go nie wyłapie.

Przestań patrzeć na wolumen. Patrz na tożsamość, zakres i wzorce.

Popełniłem dwa błędy. Po pierwsze, nie logowałem IP źródłowego. Haker mógł po prostu założyć nowe, darmowe konto.

Najpierw napraw logi. Dodaj kolumny IP i kraju do swojej bazy danych. Używaj rzeczywistego adresu IP klienta z Cloudflare zamiast adresu zdalnego (remote address). Pozwala to blokować atakujących na warstwie sieciowej.

Po drugie, zmień swoje limity.

Nie ograniczaj tylko liczby żądań w miesiącu. Ogranicz liczbę różnych celów, które jeden paszport może sprawdzić w ciągu dnia. Prawdziwy użytkownik sprawdza kilka celów. Scraper próbuje sprawdzić je wszystkie.

Masowe pobieranie danych (data sweep) ma specyficzną sygnaturę:

  • Jest gęste.
  • Jest sekwencyjne.
  • Obejmuje wszystko dla jednego źródła.

Możesz wykryć ten wzorzec, analizując okno przesuwne (sliding window) aktywności. Jeśli jeden paszport uderza w zbyt wiele celów w krótkim czasie, oznacz go. Ogranicz przepustowość (throttle) tego klucza lub zablokuj go natychmiast.

W ten sposób reagujesz na zachowanie, a nie tylko liczysz liczby.

Podziel swoją strategię na dwa zadania:

  1. Rate Limiter: Chroń swoje pieniądze. Stosuj limity wolumenu na klucz.
  2. Extraction Defense: Chroń swoje dane. Wykorzystaj tożsamość, zakres i częstotliwość.

Jeśli masz tylko rate limiter, masz jedynie zabezpieczenie kosztów (billing guardrail). Nie masz bezpieczeństwa.

Źródło: https://dev.to/mathis_higuinen_6db9b244c/your-rate-limiter-is-not-a-security-control-4b3f