# Byggde skydd mot missbruk som stänger vid fel — 22 hastighetsbegränsare i Redis, Cloudflare Turnstile, idempotenta anrop och ett ursprungslås — så att plattformen avvisar botar och anropsfloder i stället för att lita på sina anropare.

2025

**Situation.** En publik katalog över företag och yrkespersoner är en måltavla från den dag den lanseras. Skrapbotar vill åt datan, spamkonton vill åt räckvidden, och en endpoint som kostar plattformen riktiga pengar att leverera — sökning, export, allt som berör ett externt API — är värd att missbruka helt enkelt för att den är gratis att anropa. Inget av det är illvilja riktad mot just den här plattformen; det är en del av vädret på det öppna internet.

**Uppgift.** De kostsamma anropsvägar som går att missbruka behövde gränser som håller under tryck, inklusive det tryck som uppstår när anropsbegränsarens eget beroende inte är tillgängligt.

**Handling.** Det finns 22 anropsbegränsare, var och en konstruerad för den väg den skyddar i stället för ett enda globalt tak, eftersom ett inloggningsförsök, en sökning och en massexport blir missbruk vid helt olika frekvenser. Tillståndet ligger i Redis, så att en gräns delas mellan instanser i stället för att gälla per process och vara trivial att komma runt. Det viktiga beslutet är vad som händer när Redis inte finns där: anropsbegränsarna stänger vid fel. Trafiken nekas i stället för att vinkas igenom, vilket är det mindre bekväma svaret och det enda försvarbara. Runt dem finns Cloudflare Turnstile på de vägar som är värda att utmana, 351 rader middleware för idempotens så att en skrivning som görs om inte blir två, ett ursprungslås som nekar anrop som inte kommer in genom ytterdörren, och en specialbyggd utmaning på själva katalogen.

**Resultat.** Missbruk blir dyrt för den som missbrukar och billigt för plattformen, och ett avbrott i anropsbegränsarens egen lagring övergår i nekade anrop i stället för i en öppen dörr. Att stänga vid fel innebär visserligen att ett Redis‑problem blir ett problem som användarna ser — vilket accepterades medvetet, eftersom alternativet är att ett Redis‑problem blir ett faktureringsproblem.

---

- Roll: Säkerhetsingenjör
- Kategorier: [Backendutveckling](https://engineer.company/sv/categories/backend/), [API:er och integration](https://engineer.company/sv/categories/api/), [Tillförlitlighet och säkerhetskopiering](https://engineer.company/sv/categories/reliability/), [Nätverk och VPN](https://engineer.company/sv/categories/networking/), [Säkerhet](https://engineer.company/sv/categories/security/), [Prestandaoptimering](https://engineer.company/sv/categories/performance/)
- Tjänster: [Backend- och API‑utveckling](https://engineer.company/sv/services/backend-development/), [Tillförlitlig drift och övervakning](https://engineer.company/sv/services/site-reliability/), [Säkerhet och behörighetshantering](https://engineer.company/sv/services/security-access/)

<https://engineer.company/sv/portfolio/built-fail-closed-abuse-controls-and-rate-limiting-100/>
