Przejdź do głównej zawartości

59. Rate Limiting API — algorytmy i ochrona endpointów PHP

Rate Limiting API

Rate limiting to mechanizm ograniczający liczbę żądań do API w danym czasie. Chroni serwis przed przeciążeniem, atakami brute-force i nieuczciwym korzystaniem z zasobów. Każde publiczne API (GitHub, Twitter, Stripe) stosuje rate limiting.

  • Rate limiting to pierwsza linia obrony przed atakami brute-force na logowanie
  • Publiczne API Twittera, GitHuba i Google mają limity żądań
  • Implementacja rate limitera to standardowe zadanie w pracy PHP developera
  1. Wyjaśnić czym jest rate limiting i po co go stosować
  2. Opisać trzy algorytmy: Fixed Window, Sliding Window, Token Bucket
  3. Omówić odpowiedź HTTP 429 i nagłówki informacyjne
  4. Pokazać implementację w PHP
  1. Motywacja: ataki brute-force, scraping, DDoS application layer
  2. Sposoby identyfikacji klienta: IP, klucz API, token sesji
  3. Fixed Window — okno stałe (prosta implementacja, bursty)
  4. Sliding Window — ruchome okno (dokładniejszy limit)
  5. Token Bucket — żetony dodawane w czasie (burst allowance)
  6. HTTP 429 Too Many Requests — nagłówki: X-RateLimit-*, Retry-After
  7. Implementacja w PHP z plikiem/APCu/Redis

Przykład 1

Implementacja Fixed Window Rate Limiter w PHP

Przykład 2

Odpowiedź HTTP 429 z nagłówkami X-RateLimit

Przykład 3

Diagram algorytmu Token Bucket
  1. Wstęp — problemy bez rate limiting
  2. Sposoby identyfikacji klienta
  3. Algorytm Fixed Window
  4. Algorytm Sliding Window
  5. Algorytm Token Bucket
  6. HTTP 429 i nagłówki informacyjne
  7. Implementacja PHP
  8. Podsumowanie i bibliografia

Zaimplementuj i opisz!

Napisz prosty Fixed Window rate limiter dla endpointu PHP, przetestuj go i opisz jak działa. Kod mówi więcej niż teoria.