Serwery w Polsce · Warszawa Dyski NVMe

Jak zabezpieczyć API REST przed naduzywaniem (rate limiting) Drukuj

  • 0

Co to jest Rate Limiting?

Rate Limiting ogranicza liczbę zapytań do API w określonym czasie. Chroni przed atakami brute-force, naduzywaniem zasobów i DDoS na poziomie aplikacji.

Rate Limiting przez .htaccess (prosty sposób)

SetEnvIf Request_URI "^/wp-json/" api_request
SetEnvIf api_request "." api_request_present

<IfModule mod_evasive20.c>
  DOSHashTableSize    3097
  DOSPageCount        5
  DOSSiteCount        50
  DOSPageInterval     1
  DOSSiteInterval     1
  DOSBlockingPeriod   60
</IfModule>

Rate Limiting przez Cloudflare

  1. W panelu Cloudflare przejdź do Security → WAF → Rate Limiting Rules
  2. Kliknij Create Rule
  3. Ustaw warunek: URI Path zawiera /wp-json/ lub /api/
  4. Ustaw limit: np. 60 zapytań na minute z jednego IP
  5. Akcja: Block lub Challenge (CAPTCHA)

Rate Limiting w WordPress REST API przez kod

add_filter('rest_authentication_errors', function($result) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $key = 'rate_limit_' . md5($ip);
    $count = get_transient($key) ?: 0;
    if ($count > 60) {
        return new WP_Error('too_many_requests', 'Za dużo zapytan', ['status' => 429]);
    }
    set_transient($key, $count + 1, 60); // 60s okno
    return $result;
});

Czy ta odpowiedź była pomocna?

« Wstecz