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
- W panelu Cloudflare przejdź do Security → WAF → Rate Limiting Rules
- Kliknij Create Rule
- Ustaw warunek: URI Path zawiera /wp-json/ lub /api/
- Ustaw limit: np. 60 zapytań na minute z jednego IP
- 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;
});