Hız Sınırlama ve Kaba Kuvvet Koruması
Hız sınırlama ve kaba kuvvet koruması uygulayarak Node.js API'lerinizi kötüye kullanıma, hizmet engelleme ve kimlik bilgisi doldurma saldırılarına karşı savunun.
Hız Sınırlama ve Kaba Kuvvet Koruması, CoddyKit'te ücretsiz bir Node.js Backend Development Bootcamp dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Node.js Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Node.js Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
Why Limit Requests?
Without limits, a single client can hammer your API thousands of times per second — scraping data, guessing passwords, or simply overloading the server.
Rate limiting caps how many requests a client may make in a time window.
Attacks Rate Limiting Prevents
Rate limiting is a frontline defense against:
- Brute-force login attempts
- Credential stuffing with leaked passwords
- Denial-of-service floods
- Scraping and API abuse
How Counting Works
A rate limiter tracks a counter per client (usually keyed by IP). Each request increments it; when the count exceeds the limit within the window, further requests are rejected with 429 Too Many Requests.
express-rate-limit
The express-rate-limit package adds rate limiting as middleware in a few lines. Configure the window and max requests.
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});Applying the Limiter
Apply globally with app.use, or to specific routes. Once over the limit, clients automatically receive a 429 response.
app.use(limiter);
// or just protect one route:
app.use('/api/', limiter);Stricter Limits on Login
Login endpoints are prime brute-force targets, so give them a tighter limit than the rest of your API.
const loginLimiter = rateLimit({
windowMs: 10 * 60 * 1000,
max: 5,
message: 'Too many login attempts'
});
app.post('/login', loginLimiter, handler);Shared Store for Multiple Servers
The default in-memory store does not work when you run multiple instances behind a load balancer — each has its own counter. Use a shared store like Redis so limits apply across all servers.
const RedisStore = require('rate-limit-redis');
const limiter = rateLimit({
store: new RedisStore({ /* client */ }),
max: 100,
windowMs: 60000
});Trusting the Real Client IP
Behind a proxy, every request appears to come from the proxy's IP. Tell Express to trust the proxy so the limiter keys on the real client IP from X-Forwarded-For.
app.set('trust proxy', 1);Account Lockout
Beyond IP limits, track failed logins per account. After several failures, temporarily lock the account or require a CAPTCHA — defeating distributed brute-force from many IPs.
if (user.failedAttempts >= 5) {
return res.status(423).json({ error: 'Account locked' });
}Slowing Down Instead of Blocking
An alternative to hard blocks is progressive delay: each repeated request waits a little longer. The express-slow-down package adds latency rather than rejecting outright.
const slowDown = require('express-slow-down');
const speedLimiter = slowDown({
windowMs: 60000,
delayAfter: 50,
delayMs: () => 500
});Informing Clients
Good limiters send RateLimit headers telling clients their remaining quota and reset time, so well-behaved apps can back off gracefully.
const limiter = rateLimit({
max: 100,
windowMs: 60000,
standardHeaders: true
});Quick Check
Test your rate-limiting knowledge.
Recap
You learned to protect APIs from abuse:
- Rate limiting caps requests per client and returns
429when exceeded express-rate-limitadds it as middleware; use stricter limits on login- Use a Redis store across multiple servers and set
trust proxyfor real IPs - Add account lockout, progressive slow-down, and informative headers
These layers thwart brute-force, scraping, and DoS attacks.
Sıkça Sorulan Sorular
“Hız Sınırlama ve Kaba Kuvvet Koruması” dersi ücretsiz mi?
Evet — “Hız Sınırlama ve Kaba Kuvvet Koruması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Node.js Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Node.js Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“Hız Sınırlama ve Kaba Kuvvet Koruması” dersinde ne öğreneceğim?
Hız sınırlama ve kaba kuvvet koruması uygulayarak Node.js API'lerinizi kötüye kullanıma, hizmet engelleme ve kimlik bilgisi doldurma saldırılarına karşı savunun. Node.js Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Node.js Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Node.js Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Hız Sınırlama ve Kaba Kuvvet Koruması” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Node.js Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Node.js Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OWASP İlk 10’u Anlama
- Node.js’te Güvenli Kodlama Uygulamaları
- Veri Şifreleme ve Özetleme
- Hız Sınırlama ve Kaba Kuvvet Koruması