# Bygde misbruksvern som stenger ved feil — 22 Redis‑baserte hastighetsbegrensere, Cloudflare Turnstile, idempotente forespørsler og en origin‑lås — slik at plattformen avviser boter og flom i stedet for å stole på dem som kaller den.

2025

**Situasjon.** En offentlig katalog over bedrifter og fagfolk er et mål fra dagen den går live. Skrapere vil ha dataene, spamkontoer vil ha rekkevidden, og et endepunkt som koster plattformen ekte penger å betjene — søk, eksport, alt som berører et eksternt API — er verdt å misbruke rett og slett fordi det er gratis å kalle. Ingenting av dette er ondskap rettet mot akkurat denne plattformen; det er bakgrunnsvær på det åpne internettet.

**Oppgave.** De dyre og misbruksutsatte rutene trengte grenser som holder under press, også presset fra at ratebegrenserens egen avhengighet er utilgjengelig.

**Handling.** Det finnes 22 ratebegrensere, hver bygget for ruten den beskytter i stedet for ett globalt tak, fordi et innloggingsforsøk, et søk og en masseeksport blir misbruk ved helt ulike rater. Tilstanden ligger i Redis, slik at en grense deles på tvers av instanser i stedet for å gjelde per prosess og være lett å slippe unna. Den viktige beslutningen er hva som skjer når Redis ikke er der: ratebegrenserne feiler lukket (fail closed). Trafikk avvises i stedet for å slippes gjennom, noe som er det minst beleilige svaret og det eneste forsvarlige. Rundt dem ligger Cloudflare Turnstile på rutene som er verdt å utfordre, 351 linjer idempotensmellomvare slik at en skriving som prøves på nytt, ikke blir til to, en opprinnelseslås som avviser forespørsler som ikke kommer inn gjennom hoveddøren, og en skreddersydd utfordring på selve katalogen.

**Resultat.** Misbruk blir dyrt for misbrukeren og billig for plattformen, og et driftsavbrudd i ratebegrenserens eget lager ender i avvisning i stedet for i en åpen dør. Å feile lukket betyr riktignok at et Redis‑problem blir et problem brukerne ser — akseptert med vilje, fordi alternativet er at et Redis‑problem blir et faktureringsproblem.

---

- Rolle: Sikkerhetsingeniør
- Kategorier: [Backend‑utvikling](https://engineer.company/nb/categories/backend/), [API‑er og integrasjon](https://engineer.company/nb/categories/api/), [Pålitelighet og sikkerhetskopier](https://engineer.company/nb/categories/reliability/), [Nettverk og VPN](https://engineer.company/nb/categories/networking/), [Sikkerhet](https://engineer.company/nb/categories/security/), [Ytelsesoptimalisering](https://engineer.company/nb/categories/performance/)
- Tjenester: [Backend- og API‑utvikling](https://engineer.company/nb/services/backend-development/), [Pålitelighet og overvåking](https://engineer.company/nb/services/site-reliability/), [Sikkerhet og tilgangsstyring](https://engineer.company/nb/services/security-access/)

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