Next.js Uygulamasında Rate Limiter Kullanımı

Rate Limiter, günlük hayatta kullandığımız sistemlerin, uygulamaların olmazsa olmaz kurallarından biridir. Ne anlama geldiğini şöyle açıklayabiliriz; Bir sistemin belirli bir süre içinde kabul edeceği istek sayısını sınırlayan bir mekanizmadır. Dolayısı ile kullanım amaçları da şu şekilde olur; Aşırı trafik, kötüye kullanım, brute-force saldırıları, bot istekleri ve sunucu yüklenmesini önlemek.

Bu makalemde sizlere Next.js tarafında kullanılabilen rate limiter paketlerinden biri olan "rate-limiter-flexible" ı anlatmaya çalışacağım.

Nedir bu rate-limiter-flexible?

DoS saldırılarına, brute-force denemelerine ve aşırı istek yüküne karşı koruma sağlayan esnek bir rate limiting kütüphanesidir. Redis, MongoDB, MySQL, PostgreSQL, Memcached gibi birçok depolama sistemiyle çalışabilir.

Özellikleri Nelerdir?

  • Çoklu depolama desteği,
  • IP bazlı ve ya kullanıcı bazlı yapılandırma,
  • Yüksek performans

Next.js Ortamında Kullanımı

1. Kurulum

   npm install rate-limiter-flexible
   
2. IP Bazlı Rate Limiter

    // app/api/login/route.ts
    import { NextResponse } from 'next/server';
    import { RateLimiterMemory } from 'rate-limiter-flexible';

    const rateLimiter = new RateLimiterMemory({
      points: 10, // 10 deneme hakkı
      duration: 300, // 5 dakika
    });

    export async function POST(req: Request) {
      const ip = req.headers.get('x-forwarded-for') || 'unknown';

      try {
        await rateLimiter.consume(ip);
        return NextResponse.json({ success: true });
      } catch {
        return NextResponse.json({ error: 'Çok fazla deneme yaptınız!' }, { status: 429 });
      }
    }
    

Dikkat Edilmesi Gerekenler

Sunucu tarafında çalıştırın. Rate limiting mantığını client tarafına taşımayın.
Doğru depolama seçin. Küçük projeler için memory yeterli olabilir, büyük ölçekli projelerde Redis/MongoDB tercih edin.

Yanıt kodlarını doğru kullanın. Limit aşıldığında 429 Too Many Requests döndürmek standarttır.

Sonuç

rate-limiter-flexible, Next.js App Router projelerinde esnek, performanslı ve güvenilir bir rate limiting çözümü sunar.

İster küçük bir blog API’si, ister büyük ölçekli bir SaaS uygulaması geliştirin, bu paket sayesinde kullanıcı isteklerini kontrol altına alabilir ve sisteminizi güvenceye alabilirsiniz.


12 Ara 2025
Yorum