Security

Rate Limiting implementieren

Deine API vor Missbrauch schuetzen

Ohne Rate Limiting kann jeder deine API tausendmal pro Sekunde aufrufen. Das kostet dich Geld, macht deinen Server langsam und oeffnet die Tuer fuer Angriffe. Mit wenigen Zeilen Code setzt du Grenzen.

Pro-Tip — Der schnelle Weg
Setze unterschiedliche Limits fuer verschiedene Endpunkte. Login-Versuche: 5 pro Minute. API-Calls: 100 pro Minute. Webhooks: 1000 pro Minute. Nicht alles braucht das gleiche Limit.
Seite 1
1

Upstash Rate Limit installieren

Upstash bietet serverless Redis mit einem fertigen Rate-Limit SDK. Perfekt fuer Next.js weil es auf der Edge laeuft. Kein eigener Redis-Server noetig.

npm install @upstash/ratelimit @upstash/redis
2

Rate Limiter konfigurieren

Erstelle eine zentrale Rate-Limit Instanz die du in allen Route Handlers nutzen kannst. Sliding Window ist der beste Algorithmus fuer die meisten Faelle.

// lib/rate-limit.ts
import { Ratelimit } from '@upstash/ratelimit';
import { Redis } from '@upstash/redis';


export const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(10, '10 s'),
analytics: true,
});
3

In Route Handler einbauen

Pruefe das Limit am Anfang jedes Handlers. Nutze die IP-Adresse oder einen User-Identifier als Key. Bei Ueberschreitung gib 429 zurueck.

// app/api/submit/route.ts
import { ratelimit } from '@/lib/rate-limit';


export async function POST(request: Request) {
const ip = request.headers.get('x-forwarded-for') ?? '127.0.0.1';
const { success, limit, remaining } = await ratelimit.limit(ip);
if (!success) {
return Response.json({ error: 'Too many requests' }, {
status: 429,
headers: { 'X-RateLimit-Limit': limit.toString(), 'X-RateLimit-Remaining': remaining.toString() },
});
}
// ... normale Logik
}
4

Verschiedene Limits definieren

Erstelle mehrere Limiter fuer verschiedene Zwecke. Strenge Limits fuer Auth, lockere fuer allgemeine API-Calls.

export const authLimiter = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(5, '60 s'),
});


export const apiLimiter = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(100, '60 s'),
});
Seite 2
Warum das funktioniert
  • Verhindert Brute-Force Attacken auf Login und Registrierung
  • Schuetzt vor API-Missbrauch der deine Serverkosten explodieren laesst
  • Sliding Window ist fairer als feste Zeitfenster weil es sanft limitiert
  • Upstash laeuft serverless und skaliert automatisch mit deinem Traffic
Tipps
  • Upstash Free Tier hat 10.000 Requests pro Tag, das reicht fuer die meisten Projekte
  • Setz Rate-Limit Headers in die Response damit Clients wissen wie viele Requests sie noch haben
  • Fuer lokale Entwicklung kannst du Rate Limiting mit einer ENV-Variable deaktivieren
  • Kombiniere IP-basiertes und User-basiertes Limiting fuer maximalen Schutz
Seite 3
Bereit für den nächsten Schritt?

KIWorld VibeCoding Masterclass

Du willst nicht nur einzelne Tools einrichten, sondern wirklich lernen wie du mit KI komplette Apps, Websites und SaaS-Produkte baust? Über 700 Videos — von Anfänger bis Fortgeschritten — in jedem Bereich. Von der Idee bis zum fertigen Produkt, ohne eine Zeile Code selbst zu schreiben.

Jetzt Masterclass ansehen