Express.js ile Rate Limiting Uygulaması

Express.js ile Rate Limiting Uygulaması


Web uygulamalarında performansı ve güvenliği artırmak için sıkça kullanılan yöntemlerden biri de rate limiting (hız sınırlama) uygulamasıdır. Özellikle API servisleri ile çalışırken, saldırganların veya kötü niyetli kullanıcıların belirli bir süre içinde aşırı istek göndermesini engellemek için bu yöntemi uygulamak oldukça önemlidir. Bu makalede, Express.js kullanarak rate limiting uygulamasının nasıl yapılacağını inceleyeceğiz.

Rate Limiting Nedir?

Rate limiting, bir kullanıcının veya IP adresinin belirli bir süre içinde yapabileceği istek sayısını kısıtlamayı ifade eder. Örneğin, bir kullanıcıya saniyede 5 istek veya dakikada 100 istek gibi limitler koyabilirsiniz. Bu yöntem, DDoS (Distributed Denial of Service) gibi saldırılara karşı koruma sağlar ve sunucu yükünü azaltır.

Express.js ile Rate Limiting Uygulaması

Express.js üzerinde rate limiting uygulamak için birkaç farklı kütüphane bulunmaktadır. Bu örnekte, en popüler ve kullanışlı kütüphanelerden biri olan express-rate-limit kütüphanesini kullanacağız. Öncelikle, kütüphaneyi projemize dahil edelim.

npm install express-rate-limit

Rate Limiting Kütüphanesinin Kurulumu

Kütüphaneyi kurduktan sonra temel bir Express.js uygulaması oluşturalım ve rate limiting'i nasıl entegre edeceğimizi görelim:

const express = require('express');
const rateLimit = require('express-rate-limit');

const app = express();

// Rate limiting yapılandırması
const limiter = rateLimit({
  windowMs: 1 * 60 * 1000, // 1 dakika
  max: 5, // her IP için maksimum 5 isteğe izin ver
  message: 'Çok fazla istek gönderiyorsunuz. Lütfen bekleyin!'
});

// Tüm route'lar için rate limiting uygulaması
app.use(limiter);

app.get('/', (req, res) => {
  res.send('Rate Limiting Uygulaması');
});

app.listen(3000, () => {
  console.log('Sunucu 3000 portunda çalışıyor');
});

Uygulamanın Testi

Yukarıdaki kodu çalıştırdıktan sonra, tarayıcı veya Postman gibi bir araç ile http://localhost:3000/ adresine gidip istek göndermeye başlayabilirsiniz. Bir dakika içinde 5 isteği geçtiğinizde, ayarladığımız mesajı göreceksiniz. Bu sayede hem kullanıcılarınızı korumuş olursunuz hem de sunucunuzun sağlıklı bir şekilde çalışmasını sağlarsınız.

Sonuç

Express.js içinde rate limiting uygulamak, performansı artırmak ve kötüye kullanımı engellemek için etkili bir yöntemdir. express-rate-limit kütüphanesi ile bu işlemi kolayca gerçekleştirebilir ve projenizi daha güvenli hale getirebilirsiniz. Unutmayın ki, kullanıcı deneyimini de göz önünde bulundurmalısınız; bu nedenle rate limiting ayarlarını dikkatlice yapmalısınız.