Tillbaka till Sällskapet
Säkerhet· 27 augusti 2026 ·7 min läsning

Begränsning av betyg: skydda ditt API utan att blockera riktiga användare

Rate begränsande stoppar en dålig skådespelare - eller en buggy script - från att hamra din webbplats i marken, utan att smälla dörren på alla andra. Att välja gränser är den svåra delen.

Mads Edelskjold
Mads Edelskjold
Grundare, NordicCDN tidigare CTO för datacenter
Begränsning av betyg: skydda ditt API utan att blockera riktiga användare
Den korta versionen

Begränsningstak visar hur många förfrågningar en klient kan göra i ett tidsfönster. Den skyddar inloggningsformulär, sökningar och API:er från brute force, skrapning och runaway-skript. Mekanismen är enkel; plocka gränser som stoppar angripare utan att fånga riktiga människor är den del som tar tanke - särskilt eftersom hela kontor och mobila nätverk delar en enda IP-adress.

Varje webbplats har några slutpunkter som lockar problem. Inloggningsformuläret, återställningen av lösenordet, sökrutan, det offentliga API:et. Lämnas obevakad, kan ett skript slå dem tusentals gånger i sekunden - gissa lösenord, skrapa katalogen eller bara fungera entusiastiskt för att någon glömde en paus uttalande.

Rate limiting är det tak som säger "det räcker". Tanken tar en mening; att få det rätt tar lite mer.

Idén

Ge varje kund ett rimligt antal förfrågningar per tidsenhet och avvisa eller sakta ner de som överskrider dem. En person som klickar runt på en webbplats gör kanske tio förfrågningar per minut. Ett brutalt manus gör tusentals. Det finns en enorm mängd utrymme mellan dessa två siffror, vilket är vad som gör att det här fungerar alls.

Verklig besökare
10 euro/min
Aggressiv bot
tusentals/min

Vilken algoritm och varför det är viktigt

Det finns tre vanliga tillvägagångssätt och skillnaden mellan dem är mer praktisk än det låter.

Fast fönster

Räkna förfrågningar per kalenderminut; återställ räknaren högst upp i varje minut. Enkelt, billigt, och det har en uppenbar brist: en klient kan göra sin fulla ersättning vid 10:00:59 och dess fulla ersättning igen vid 10:01:00, leverera dubbelt den avsedda kursen i en två sekunders burst. Bra för grov skydd, inte för något du bryr dig om.

Glidfönster

Räkna antalet förfrågningar under de efterföljande sextio sekunderna i stället för den aktuella kalenderminuten. Detta stänger gränshålet och är vad de flesta människor faktiskt vill ha när de säger "100 förfrågningar per minut".

Tokenskopa

Tänk dig en hink med 60 polletter som fylls på en gång per sekund. Varje begäran spenderar en token. Förfrågningar i en förnuftig takt dränera aldrig det; en burst kan spendera flera på en gång, och ihållande översvämning tömmer det och blir vägrat tills det fylls på.

bucket of tokens refills steadily → each request spends one empty → slow down
Bursts tolereras; ihållande översvämning dränerar hinken och blir strypt.

Token hink är vanligtvis rätt standard, eftersom det matchar hur verklig användning faktiskt ser ut. En person som laddar en sida avfyrar ett dussin förfrågningar på en gång och gör sedan ingenting i trettio sekunder. En strikt per sekund-gräns straffar det helt normala beteendet; en skopa absorberar det.

Att välja gränser

Misstaget är en global gräns som tillämpas överallt. Dina slutpunkter har väldigt olika riskprofiler och väldigt olika legitima användningsmönster, så de vill ha väldigt olika siffror.

SlutpunktUtgångspunktÖverskrider
Logga in, återställ lösenord510 per minut per IPUtmaning, sedan blockera
Anmälan, kontaktformulär35 per minut per IP-adressUtmaning
Sök2030 per minut per IPGasreglage
Offentligt API, oautentiserat60 per minut per IP429 med försök efter
Offentligt API, per API-nyckelPer din plan nivåer429 med försök efter
Allmän sidasökning300+ per minut per IP-adressGasreglage

Det är utgångspunkter, inte rekommendationer för din webbplats – rätt siffror kommer från att titta på din egen trafik. Ta en vecka med loggar, hitta den 99:e procentsatsen för begäran om verkliga sessioner på varje slutpunkt och sätt gränsen på ett meningsfullt sätt ovanför den. Om din mest trafikerade användare gör 40 sökningar per minut kommer en gräns på 30 att generera arga e-postmeddelanden.

Den delade IP-fällan

Det här är den som fångar människor, och den fångar dem på ett sätt som är osynligt från din sida.

En enda IP-adress är ofta inte en enda person. Ett kontor med 200 personer bakom en NAT-gateway är en IP-adress. Ett universitetscampus är en IP-adress. Mobiloperatörer lägger rutinmässigt tusentals abonnenter bakom NAT av operatörskvalitet och delar en handfull adresser. VPN-tjänster för företag koncentrerar ett helt företag till en enda utgångsnod.

Ange en aggressiv per-IP-gräns och du blockerar inte en missbrukande användare, du blockerar alla på det företaget, och de upplever det som "din webbplats är trasig" snarare än "vi har varit begränsade". De kommer inte att maila dig. De kommer bara att gå.

Om du kan, betygsätt gränsen för något mer specifikt än en IP – en API-nyckel, en session, ett användarkonto. För oautentiserad trafik där IP-adressen är allt du har, föredra en utmaning framför ett hårt block när gränsen går. Ett delat kontor klarar utmaningen och fortsätter; ett manus gör det inte.

Misslyckas artigt

När du avvisar en förfrågan, gör det på det sätt som standarden förväntar sig, eftersom klienten i andra änden kan mycket väl vara en legitim integration som kommer att bete sig korrekt om du berättar hur.

Återgå 429 för många förfrågningar inte 403, vilket betyder "du är inte tillåten", ett annat och oåterkalleligt meddelande. Inkludera en Retry-After En header som visar hur länge man ska vänta. Om du kör ett offentligt API skickar du det aktuella gränstillståndet på varje svar, inte bara avslagen, så en välskriven klient kan sakta ner innan den träffar väggen snarare än efter.

Och håll dina svar på prisgränsen billiga. Om det kostar dig en databasfråga att avvisa en begäran kan en bestämd angripare fortfarande göra dig utmattad med hjälp av inget annat än avslag. Detta är ett annat argument för att begränsa vid kanten, där avslag sker innan din ansökan alls är inblandad.

Saker som är värda att undantas

  • Verifierade sökrobotar. Googlebot kryper in och begränsar hastigheten så att den kan skada din indexering tyst. Kontrollera och undanta.
  • Din egen övervakning. Drifttidskontroller från en fast adress bör inte konkurrera med dina gränser.
  • Webhook-avsändare. Betalningsleverantörer försöker igen aggressivt genom design; en gräns som blockerar dem kan förlora dina beställningar.
  • Statiska tillgångar. En sidvisning innehåller dussintals begäranden om tillgångar. Att begränsa dem per IP fångar normal surfning omedelbart.

Vanliga frågor

Vad är Rate Limiting?

Betygsätt hur många förfrågningar en enskild kund kan göra inom en viss tidsperiod, och avvisa eller sakta ner något utöver det. Det skyddar inloggningsformulär, sökslutpunkter och API:er från försök med brute force, skrapning och felaktigt skript, samtidigt som normal användning förblir orörd eftersom legitim trafik ligger långt under tröskeln för en angripare. behov.

Vad är en bra prisgräns för ett API?

Det beror på slutpunkten snarare än platsen. Inloggnings- och lösenordsåterställningsslutpunkter motiverar 5 till 10 förfrågningar per minut per IP, anmälningsformulär 3 till 5, sök 20 till 30 och ett oautentiserat offentligt API runt 60. Härleda dina faktiska siffror från dina egna loggar genom att hitta den 99: e percentilen begäran takt av äkta sessioner och ställa in gränsen bekvämt över den.

Vilken HTTP-statuskod ska en kursgräns returnera?

429 För många förfrågningar, tillsammans med ett Retry-After-huvud som anger hur länge kunden ska vänta. Använd inte 403 Forbidden, vilket signalerar att klienten inte är tillåten alls snarare än att den ska sakta ner och försöka igen. Offentliga API:er bör också returnera nuvarande gränstillstånd för lyckade svar så att kunderna kan strypa innan de avvisas.

Varför blockerar hastighetsbegränsande riktiga användare?

Nästan alltid eftersom många människor delar en IP-adress. Kontor bakom en NAT-gateway, universitetscampus, företags-VPN och mobiloperatörer som använder NAT av operatörskvalitet kan lägga hundratals eller tusentals äkta användare bakom en enda adress. En per IP-gräns som är inställd för en person blockerar därför alla. Begränsa API-nyckeln, sessionen eller kontot där det är möjligt, och föredra en utmaning framför ett hårt block annars.

Vad är token hink algoritmen?

Tokenskopan modellerar en skopa med ett fast antal tokens som fylls på i jämn takt. Varje begäran förbrukar en token, och begäran avvisas när skopan är tom. Detta tolererar korta skurar, vilket är hur verklig surfning beter sig, samtidigt som det täcker ihållande begäran priser - vilket gör det bättre för webbtrafik än en strikt fast fönsterräknare.

Hastighetsbegränsning är en av de kontroller där standardkonfigurationen sällan är rätt och rätt konfiguration sitter i dina åtkomstloggar. Tillbringa en timme med en veckas trafik innan du väljer dina nummer, och du kommer att undvika den mycket längre eftermiddagen för att räkna ut varför en kunds hela kontor inte kan logga in.

#taktbegränsning #api #säkerhet #missbruk
Omsätt det i praktiken

Se hur NordicCDN gör detta för din webbplats:

Mads Edelskjold
Skrivet av
Mads Edelskjold Grundare, NordicCDN ex-datacenter CTO

Mads har arbetat inom IT – mestadels som värd – sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till förvärvet av Visma, har byggt och drivit datacenternätverk och fungerat som CTO för ett danskt datacenter. Han startade NordicCDN för att göra snabb och säker infrastruktur enkel att använda.

Gör din webbplats laddad direkt

Starta gratis på två minuter – inget kort krävs.

Starta gratis