📝 BLOG

API Rate Limiting: Throttling, Quota ve DDoS Koruması

API rate limiting, API'nizin kötüye kullanımını ve aşırı yüklenmesini önler. Bu rehberde rate limiting stratejilerini, throttling, quota yönetimi ve DDoS korumasını anlatıyoruz.

Son güncelleme:

Hazırlayan: Gsetsoft

API Rate Limiting: Throttling, Quota ve DDoS Koruması

Rate Limiting Nedir?

Rate limiting, belirli bir zaman diliminde (saniye, dakika, saat) yapılabilecek istek sayısını sınırlamaktır.

Amaçlar: API kötüye kullanımını önleme, adil kullanım sağlama, sunucu kaynaklarını koruma, DDoS saldırılarını azaltma.

Rate limit aşıldığında: 429 (Too Many Requests) HTTP status kodu döner. Retry-After header'ı ile ne zaman tekrar deneneceğini belirtir.

Rate limiting, API'nin kullanılabilirliğini ve güvenilirliğini artırır. SLA (Service Level Agreement) uyumluluğunu sağlar.

Rate Limiting Algoritmaları

Fixed Window: Sabit zaman penceresinde (örn. dakikada 100 istek) sayaç tutulur. Basit ama boundary problem (pencere sınırlarında spike).

Sliding Window Log: Her isteğin timestamp'ini saklayın. Son N saniyedeki istek sayısını hesaplayın. Daha doğru ama daha fazla bellek kullanır.

Sliding Window Counter: Fixed window ve sliding window log'un hibridi. Daha az bellek, daha doğru sonuç.

Token Bucket: Token'lar belirli bir hızda üretilir. Her istek bir token tüketir. Burst (anlık artış) desteği sağlar.

Leaky Bucket: İstekler kuyruğa eklenir ve sabit hızda işlenir. Trafik smoothing (yumuşatma) sağlar.

Rate Limiting Stratejileri

IP-based: İstek yapan IP adresine göre limit. Basit ama NAT arkasındaki kullanıcılar (aynı IP) sorun yaşar.

User-based: Kimlik doğrulanmış kullanıcıya göre limit. Daha adil. API key veya JWT ile kullanıcıyı tanımlayın.

Endpoint-based: Her endpoint için farklı limit. /login (5/dk) vs /users (100/dk).

Tiered: Farklı kullanıcı tipleri için farklı limitler. Free (100/dk), Pro (1000/dk), Enterprise (10000/dk).

Global vs per-endpoint: Global limit (tüm API için) + per-endpoint limit. İkisini birlikte kullanın.

Implementasyon

Redis: Rate limit sayaçlarını Redis'te saklayın. INCR ve EXPIRE komutları ile atomik sayaç. Distributed rate limiting için ideal.

Middleware: Express.js (express-rate-limit), Django (django-ratelimit), Spring Boot (Bucket4j) middleware'leri.

API Gateway: Kong, AWS API Gateway, Cloudflare ile rate limiting. Merkezi yönetim ve monitoring.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset header'ları ile limit bilgisi döndürün.

Client SDK: İstemci kütüphaneleri, rate limit bilgisini okuyarak otomatik retry ve backoff yapar.

DDoS Koruması

Rate limiting tek başına DDoS koruması sağlamaz. DDoS saldırıları, rate limit'i aşan hacimde gelir.

Cloudflare: DDoS koruması, WAF (Web Application Firewall), bot yönetimi. Ücretsiz tier mevcut.

AWS Shield: AWS servisleri için DDoS koruması. Standard (ücretsiz) ve Advanced (ücretli).

IP reputation: Kötü itibarlı IP'leri bloklayın. Spamhaus, AbuseIPDB gibi reputation listeleri kullanın.

CAPTCHA: Şüpheli trafiği CAPTCHA ile doğrulayın. reCAPTCHA v3 (invisible) veya hCaptcha.

Geo-blocking: Belirli ülkelerden gelen trafiği engelleyin (gerekirse).

Best Practices

Graceful degradation: Rate limit aşıldığında kullanıcıya açık hata mesajı verin. Retry-After header'ı ile ne zaman tekrar deneneceğini belirtin.

Monitoring: Rate limit hit'lerini izleyin. Anormal artış, saldırı veya bug belirtisi olabilir.

Whitelist: Güvenilir IP'leri (internal services, partner API'ler) whitelist'e alın.

Documentation: Rate limit politikasını API dokümantasyonunda açıkça belirtin. Limit, window ve retry bilgisi.

Testing: Load testing ile rate limit davranışını test edin. k6, Artillery veya JMeter kullanın.

İlgili araçlar

Gizlilik tercihiniz

Temel çerezler güvenli kullanım ve oturum yönetimi içindir. Temel ziyaret sayımı ayrıca yapılır; izin verirseniz ek kullanım analizlerini etkinleştiririz. Çerez Politikası