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.
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
INCRoch TTL eller använd bibliotek för glidande tidsfönster - Returnera
429medRetry-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.
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
- Integration med OAuth 2.0
- Multifaktorautentisering (MFA)
- Rollbaserad åtkomstkontroll (RBAC)
- Hastighetsbegränsning och skydd mot brute force