Przejdź do głównej zawartości

Ograniczanie tempa (Rate Limiting)

Ograniczanie tempa to mechanizm po stronie serwera, który nakłada limit na liczbę żądań, jakie adres IP, konto użytkownika lub token uwierzytelniania mogą przesłać w określonym oknie czasowym; służy zapobieganiu napychaniu głosami, atakom brute-force oraz innym formom zautomatyzowanych nadużyć.

Definicja

Ograniczanie tempa to kontrola zarządzania ruchem, która egzekwuje górną granicę tego, jak często klient może wykonywać konkretną akcję w określonym oknie czasowym. Gdy klient przekroczy próg, serwer odpowiada błędem — zazwyczaj HTTP 429 Too Many Requests — lub po cichu odrzuca nadmiarowe żądania. Okno czasowe resetuje się albo na ustalonym harmonogramie (licznik „stałego okna”), albo w sposób przesuwny (licznik „przesuwającego się okna”), przy czym przesuwające się okna zapewniają płynniejsze egzekwowanie, które zapobiega wykorzystywaniu wybuchów na granicach okna.

Ograniczanie tempa to jedna z najstarszych i najuniwersalniej wdrożonych kontroli bezpieczeństwa internetowego. OWASP (Open Web Application Security Project) zaleca to jako główną obronę przeciwko atakom brute-force, credential stuffing i automatycznemu nadużyciu formularzy. Cloudflare oferuje ograniczanie tempa jako funkcję swojego produktu WAF, z regułami konfigurowalnymi przez ścieżkę URL, metodę HTTP, adres IP, wartość cookie i nagłówek żądania. AWS WAF, Azure Front Door i Google Cloud Armor zapewniają równoważne możliwości.

Jak działa ograniczanie tempa

Ogranicznik tempa utrzymuje licznik dla każdego unikalnego identyfikatora klienta — najczęściej adresu IP źródłowego, ale czasem identyfikatora konta, klucza API lub cookie sesji. Gdy żądanie nadchodzi, serwer sprawdza bieżącą wartość licznika dla tego identyfikatora. Jeśli licznik jest poniżej progu, żądanie jest dozwolone, a licznik jest inkrementowany. Jeśli licznik jest na lub powyżej progu, żądanie jest odrzucane z odpowiedzią 429 lub obsługiwane zgodnie ze skonfigurowaną polityką.

Przechowywanie liczników jest zwykle implementowane w Redis lub Memcached, aby umożliwić szybkie, rozproszone wyszukiwania w wielu instancjach serwerów — wymaganie dla aplikacji skalowanych horyzontalnie. Dokumentacja Cloudflare opisuje egzekwowanie ograniczania tempa na poziomie sieci edge, gdzie reguły są stosowane przed dotarciem żądań do serwera origin, dystrybuując redukcję obciążenia w globalnej infrastrukturze Cloudflare.

Powszechne parametry ograniczania tempa w kontekście konkursów obejmują:

Ograniczanie tempa może być również stosowane probabilistycznie — na przykład poprzez stosowanie surowszych limitów do żądań przybywających z sygnałami behawioralnymi lub odciskami sugerującymi automatyzację, podczas gdy luźniejsze limity są stosowane do sesji ze wskaźnikami ludzi o wysokiej pewności.

Gdzie się z tym spotkasz

Ograniczanie tempa to wszechobecna kontrola obecna praktycznie na każdej platformie internetowej. Operatorzy konkursów napotykają je najbardziej bezpośrednio w trzech punktach: endpoincie przesyłania głosu, formularzu rejestracji konta i (jeśli wymagane jest potwierdzenie email) pipeline’ie wysyłki email. Integracje konkursowe oparte na API napotykają limity tempa na endpointach API platformy.

Dla użytkowników końcowych ograniczanie tempa najwidoczniej manifestuje się jako błąd HTTP 429 lub komunikat specyficzny dla platformy, taki jak „Już głosowałeś” lub „Poczekaj przed kolejnym głosowaniem”. Wiele platform implementuje miękkie ograniczanie tempa — akceptujące żądanie, ale po cichu odrzucające duplikat — aby uniknąć sygnalizowania istnienia kontroli potencjalnym nadużywającym.

Dokumentacja ograniczania tempa WAF Cloudflare zauważa, że reguły ograniczania tempa mogą być ustawione na logowanie bez blokowania podczas fazy analizy, a następnie przełączone na blokowanie po skalibrowaniu odpowiedniego progu. To dwufazowe podejście pomaga operatorom konkursów uniknąć przypadkowego blokowania prawowitych skoków głosowania.

Praktyczne przykłady

Konkurs nagród blogerów kulinarnych konfiguruje swój system głosowania z 24-godzinnym limitem tempa na IP. Podczas ostatniego tygodnia konkursu wyborca próbuje przesłać 50 głosów w szybkiej sekwencji z tego samego rezydencjalnego adresu IP. Pierwszy głos jest akceptowany; kolejne 49 żądań otrzymuje odpowiedź 429. Przeglądarka wyborcy wyświetla komunikat wyjaśniający ograniczenie raz dziennie.

Platforma konkursowa SaaS hostująca setki jednoczesnych konkursów używa ograniczania tempa Cloudflare na sieci edge. Bot kierujący się na jeden konkurs z 10 000 żądań na minutę jest dławiony do maksimum 60 żądań na minutę na edge, przy czym nadmiarowe żądania nigdy nie docierają do serwera origin. Logi serwera origin pokazują tylko zdławiony ruch, a użycie CPU po stronie serwera pozostaje niezmienione.

Przegląd bezpieczeństwa OWASP niestandardowej mikrostrony konkursowej startupu identyfikuje brak ograniczania tempa na endpoincie ponownego wysyłania potwierdzenia email jako podatność — atakujący mógłby zalać skrzynkę odbiorczą ofiary, wyzwalając tysiące emaili potwierdzających. Przegląd zaleca wdrożenie limitu tempa 3 żądań ponownego wysłania na adres email na godzinę, zgodnie z wytycznymi zapobiegania brute-force OWASP.

Powiązane pojęcia

Wykrywanie anomalii to bardziej wyrafinowane uzupełnienie ograniczania tempa: gdzie ograniczanie tempa egzekwuje twarde progi, wykrywanie anomalii identyfikuje odchylenia od wyuczonej linii bazowej zachowania, łapiąc kampanie oszustw, które pozostają tuż poniżej stałych limitów. Różnorodność ASN staje się istotna, gdy limity tempa są stosowane na IP, a zły aktor rozprasza żądania na wiele adresów IP, aby pozostać poniżej progów na IP — analiza na poziomie ASN wykrywa zagregowany wzorzec. reCAPTCHA v3 zapewnia behawioralną ocenę ryzyka, która może być łączona z ograniczaniem tempa, aby selektywnie stosować surowsze limity do sesji, które są oceniane jako potencjalnie zautomatyzowane.

Ograniczenia / zastrzeżenia

Ograniczanie tempa oparte na IP jest mniej skuteczne w środowiskach z carrier-grade NAT, gdzie pojedynczy publiczny IP może reprezentować setki prawowitych abonentów komórkowych. Limit tempa na IP wynoszący 1 głos na 24 godziny niepoprawnie uniemożliwiłby głosowanie większości tych abonentów. Dlatego ograniczanie tempa na platformach konkursowych musi być warstwowe z deduplikacją opartą na koncie lub cookies, gdy publiczność mobilna jest znacząca. Ponadto limity tempa ustawione zbyt agresywnie mogą obniżać doświadczenie prawowitych wyborców przybywających ze współdzielonych sieci, takich jak kampusy uniwersyteckie, biura korporacyjne lub duże publiczne hotspoty Wi-Fi.

Z bloga — przewodniki i studia przypadków

Praktyczne przewodniki, głębokie analizy techniczne i anonimizowane studia przypadków.60+ artykułów. Wybór obraca się.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
Online · zwykle odpowiada w 5 min

Cześć 👋 — wyślij URL konkursu, w ciągu godziny dam wycenę. Karta jeszcze niepotrzebna.