 (45).png)
"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!
Rate Limiting, API'nize gelen istekleri sınırlandırma tekniğidir:
// Örnek: 1 dakikada maksimum 60 istek
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60);
});
2. Laravel'de Temel Throttling 🛠️
app/Http/Kernel.php'de:
protected $middlewareGroups = [
'api' => [
'throttle:api',
// ...
],
];
RateLimiter::for('downloads', function (Request $request) {
return $request->user()
? Limit::perMinute(100)->by($request->user()->id)
: Limit::perMinute(10)->by($request->ip());
});
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
Limit::perMinute(60)->by($key)->response(function () {
return response('Çok fazla istek!', 429);
});
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())
];
});
Ö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);
CACHE_DRIVER=redis
// Redis özel throttling
Redis::throttle('api')
->allow(60)
->every(60)
->then(function () {
// İşlem
}, function () {
abort(429);
});
// Testte rate limit'i bypass etme
$this->withoutMiddleware(
ThrottleRequests::class
);
// Veya özel limitlerle test
Config::set('throttle.limits.api', '1000/minute');
SenaryoThrottling YokThrottling VarKazanımBrute Force10k istek/dk60 istek/dk🛡️ 166xSunucu Yükü%100 CPU%20 CPU⚡ 5xAdil KullanımDengesizEşit dağılım⚖️
Laravel Throttling ile:
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 🚀