Limitowanie częstości żądań ogranicza liczbę żądań, które klient może wysłać w oknie czasowym. Aplikujesz je na wielu warstwach, ponieważ każda widzi coś innego, i kluczujesz je na cokolwiek identyfikuje napastnika.
Limitowanie częstości żądań ogranicza liczbę żądań, które klient może wysłać w oknie czasowym. Aplikujesz je na wielu warstwach, ponieważ każda widzi coś innego, i kluczujesz je na cokolwiek identyfikuje napastnika.
429 Too Many Requests z Retry-After, aby klienci uprzejmie się wycofali zamiast młócić.# Define a shared-memory zone keyed by client IP.
# rate=10r/s = the steady refill rate (token bucket).
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
location /api/ {
# burst=20: allow a short spike of 20 queued requests
# nodelay: serve the burst immediately instead of spacing it out
limit_req zone=api burst=20 nodelay;
# Return 429 (not the default 503) so clients see a rate-limit signal
limit_req_status 429;
proxy_pass http://backend;
}
}
Tu każde IP uzupełnia się w tempie 10 żądań/sekundę, może wyskoczyć do 20, a wszystko poza tym dostaje 429.
Limitowanie częstości jest Twoją najtańszą, zawsze włączoną obroną przed powodziami warstwy 7, atakami na poświadczenia i szalałymi skraperami. Warstwowanie go (edge dla wolumenu, proxy dla originu, aplikacja dla logiki biznesowej) i prawidłowe kluczowanie zatrzymuje napastników, podczas gdy rzeczywiści użytkownicy — i legitymalne serie — przechodzą bez zmian. Ustalanie limitów na podstawie rzeczywistych linii bazowych to to, co zapobiega staniu się przerywą z Twojej winy.