AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning · Lektion

Hastighetsbegränsning och skydd mot brute force

Skydda er SaaS-autentisering och era API:er mot missbruk med hastighetsbegränsning, kontolåsning och exponentiell backoff med en snabb lagringstjänst som Redis.

Lektion 4 av 413 steg

Hastighetsbegränsning och skydd mot brute force är en gratis lektion i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Varför begränsa anropsfrekvensen?

Utan begränsningar kan angripare överbelasta er login-endpoint för att gissa lösenord, samla in data eller orsaka höga kostnader för avgiftsbelagda API:er. Begränsning av anropsfrekvens anger hur många begäranden en klient får göra under ett tidsintervall.

Identifiera klienten

Begränsningarna baseras på något som identifierar anroparen: en IP-adress, ett användar-ID eller en API-nyckel. Välj nyckel utifrån vad ni skyddar.

const key = 'login:' + (userId ?? clientIp);

Algoritmen med fast tidsfönster

Den enklaste metoden räknar begäranden per fast tidsfönster. Om antalet överskrider gränsen avvisar ni begäranden tills fönstret återställs.

// allow 5 requests per 60 seconds
if (count > 5) return reject();

Räkna i Redis

Redis är idealiskt: INCR ökar en räknare atomiskt och en TTL löper automatiskt ut när tidsfönstret är slut. Den första begäran anger utgångstiden.

const n = await redis.incr(key);
if (n === 1) await redis.expire(key, 60);
if (n > 5) throw new Error('Too many requests');

Glidande tidsfönster och token bucket

Fasta tidsfönster tillåter toppar vid gränserna. Ett glidande tidsfönster jämnar ut detta, och en token bucket tillåter korta toppar samtidigt som en genomsnittlig takt upprätthålls. Bibliotek som Upstash Ratelimit implementerar detta åt er.

import { Ratelimit } from '@upstash/ratelimit';
const rl = new Ratelimit({ redis, limiter: Ratelimit.slidingWindow(5, '60 s') });

Tillämpa i middleware

Centralisera begränsningen i Next.js-middleware så att den körs före varje matchad begäran.

export async function middleware(req) {
  const { success } = await rl.limit(req.ip ?? 'anon');
  if (!success) return new Response('Rate limited', { status: 429 });
}

Returnera 429 korrekt

När gränsen har nåtts ska ni svara med statusen 429 och en Retry-After-header som anger när klienterna kan försöka igen.

return new Response('Too many requests', {
  status: 429,
  headers: { 'Retry-After': '60' }
});

Kontolåsning

För inloggning bör ni särskilt spåra misslyckade försök per konto. Efter flera misslyckanden låser ni tillfälligt kontot för att stoppa riktade brute force-attacker.

const fails = await redis.incr('fail:' + email);
if (fails >= 5) await redis.expire('lock:' + email, 900);

Exponentiell backoff

Öka fördröjningen efter varje misslyckande: 1 s, 2 s, 4 s, 8 s. Det försvårar automatiserade gissningar utan att knappt påverka legitima användare.

const delay = Math.min(2 ** fails, 60) * 1000;

Undvika falska positiva resultat

Var försiktig så att ni inte straffar riktiga användare:

  • Delade kontors-IP-adresser delar en gräns – föredra nycklar per användare när användaren är autentiserad
  • Återställ räknare vid lyckade försök
  • Ange generösa gränser för normal användning

Bästa praxis

Skydda endpoints ordentligt:

  • Basera gränser på IP, användare eller API-nyckel
  • Använd Redis med glidande tidsfönster eller token bucket
  • Returnera 429 med Retry-After
  • Lägg till låsning och backoff för inloggning

Snabb kontroll

Testa era kunskaper om begränsning av anropsfrekvens.

Sammanfattning

Ni har lärt er att skydda mot missbruk:

  • Basera begränsningar av anropsfrekvens på IP, användare eller API-nyckel
  • Räkna med Redis INCR och TTL eller använd bibliotek för glidande tidsfönster
  • Returnera 429 med Retry-After
  • Lägg till kontolåsning och exponentiell backoff för inloggningar

Er autentisering och era API:er står nu emot brute force-attacker och överbelastning.

Gratis att börja

Lär dig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Hastighetsbegränsning och skydd mot brute force” gratis?

Ja – hela texten till ”Hastighetsbegränsning och skydd mot brute force” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Vad lär jag mig i ”Hastighetsbegränsning och skydd mot brute force”?

Skydda er SaaS-autentisering och era API:er mot missbruk med hastighetsbegränsning, kontolåsning och exponentiell backoff med en snabb lagringstjänst som Redis. Ni övar på AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning?

Du behöver inga förkunskaper. Utbildningen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Hastighetsbegränsning och skydd mot brute force”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektionen?

Ja. Varje AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Integration med OAuth 2.0
  2. Multifaktorautentisering (MFA)
  3. Rollbaserad åtkomstkontroll (RBAC)
  4. Hastighetsbegränsning och skydd mot brute force
← Tillbaka till AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning