"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 🚀