"API'nizi DDoS saldırılarından nasıl korursunuz?" Laravel'in güçlü rate limiting sistemiyle API'nizi nasıl güvenceye alacağınızı öğrenelim!
1. API Throttling Nedir? 🤔
Rate Limiting, API'nize gelen istekleri sınırlandırma tekniğidir:
- Brute Force saldırılarını önler 🔒
- Sunucu kaynaklarını korur 🛡️
- Adil kullanım sağlar ⚖️
// Örnek: 1 dakikada maksimum 60 istek
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60);
});
2. Laravel'de Temel Throttling 🛠️
Global Rate Limiting
app/Http/Kernel.php'de:
protected $middlewareGroups = [
'api' => [
'throttle:api',
// ...
],
];
Özel Limitler Tanımlama
RateLimiter::for('downloads', function (Request $request) {
return $request->user()
? Limit::perMinute(100)->by($request->user()->id)
: Limit::perMinute(10)->by($request->ip());
});
3. Farklı Throttling Stratejileri 🧩
StratejiKullanımÖrnekIP BazlıAnonim kullanıcılarby($request->ip())Kullanıcı BazlıGiriş yapmış kullanıcılarby($request->user()->id)Endpoint ÖzelBelirli route'lar içinby('endpoint:'.$request->path())Dinamik LimitKullanıcı tipine göre$request->user()->isPremium() ? 1000 : 100
4. Advanced Throttling Teknikleri 🚀
Burst Limiting (Anlık Patlamalar)
Limit::perMinute(60)->by($key)->response(function () {
return response('Çok fazla istek!', 429);
});
Segment Bazlı Limiting
RateLimiter::for('api', function (Request $request) {
return [
Limit::perMinute(1000)->by('global'),
Limit::perMinute(100)->by($request->user()->id),
Limit::perMinute(10)->by('endpoint:'.$request->path())
];
});
5. Hata Yönetimi ve Yanıtlar ⚠️
Özel Hata Sayfası:
abort(429, 'Çok fazla istek gönderdiniz. Lütfen 1 dakika bekleyin.');
J
SON Yanıtı:
response()->json([
'message' => 'Too many attempts',
'retry_after' => $seconds,
], 429);
6. Redis ile Yüksek Performanslı Throttling ⚡
CACHE_DRIVER=redis
// Redis özel throttling
Redis::throttle('api')
->allow(60)
->every(60)
->then(function () {
// İşlem
}, function () {
abort(429);
});
7. Test Senaryoları 🧪
// Testte rate limit'i bypass etme
$this->withoutMiddleware(
ThrottleRequests::class
);
// Veya özel limitlerle test
Config::set('throttle.limits.api', '1000/minute');
Performans Karşılaştırması 📊
SenaryoThrottling YokThrottling VarKazanımBrute Force10k istek/dk60 istek/dk🛡️ 166xSunucu Yükü%100 CPU%20 CPU⚡ 5xAdil KullanımDengesizEşit dağılım⚖️
Güvenli ve Dengeli API'ler 🏆
Laravel Throttling ile:
- Saldırılara karşı koruma 🛡️
- Sunucu kaynaklarını koruma 💾
- Adil kullanım sağlama ⚖️
API'nizde hangi throttling stratejilerini kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de Soft Delete: Verileri Güvenli Silme] - Verilerinizi gerçekten silmeden "silinmiş" gibi yapın!
#Laravel #API #Security #RateLimiting #WebDevelopment 🚀
+(45).png&w=320&q=50)


