19 beste fremgangsmåter for API-sikkerhet for å implementere og holde seg trygge

API-sikkerhet er en av de viktigste aspektene du må ta vare på i nesten alle applikasjoner.

I dag er APIer den beste måten å integrere applikasjonen din med andre applikasjoner. De gir en inngangsport til applikasjonen din, og derfor må API-ene være sikre nok til at du ikke får uønskede besøkende.

La oss se på noen API-sårbarheter som kan være en trussel mot applikasjonen din.

Vanlige API-sårbarheter

#1. Skripting på tvers av nettsteder (XSS)

XSS-angrep er vanlige i nettapplikasjoner, men kan også skje gjennom APIer hvis innkommende brukerdata ikke er ordentlig renset. Angripere kan kjøre ondsinnede skript på serveren og få tilgang til sensitive data.

#2. Satsbegrensende brudd

Brudd på den hastighetsbegrensende funksjonen til API kan gi angripere sjansen til å bombardere serveren din med et stort antall forespørsler. Til slutt kan serveren krasje, og kundebasen din kan ha problemer med å nå deg.

#3. Feil autentisering

Hvis API-en ikke er riktig konfigurert ved hjelp av en pålitelig autentiseringsmetode, kan enhver tredjepart få tilgang til systemet ditt gjennom API-en. Autorisasjon er også viktig fordi den definerer hvem som kan få tilgang til hvilken API-ressurs frem til et spesifisert tidsrom.

#4. Usikker dataoverføring

Dataene som sendes til forbrukerne av API-en din må være kryptert underveis. Hvis det ikke er det, er det sjanser for at dataene kan bli lekket av angripere som bruker et mann-i-midten-angrep. Det er derfor det alltid anbefales å bruke en sikker protokoll som HTTPS for å overføre data.

#5. Utdaterte/utdaterte avhengigheter

APIer har mange eksterne avhengigheter som brukes til å utføre komplekse oppgaver og for å avlaste litt kompleks logikk. Hvis disse avhengighetene har en sårbarhet, blir API-en din indirekte også sårbar. Sørg alltid for å oppdatere avhengighetsversjonene.

Nå som du kjenner API-sårbarheter, la oss se på noen beste fremgangsmåter for å sikre API-en din.

Les også: Beste Postman-alternativer til å teste API for utviklere

API-sikkerhet – beste praksis

API-versjon

Det er avgjørende å regelmessig overvåke og oppdatere API-ene dine med oppdaterte avhengigheter, da disse avhengighetene kan inneholde store sårbarheter. Du kan varsle API-brukerne ved å gi ut en oppdateringsversjon av API-en i henhold til semantisk versjonering.

Å holde API-et ditt oppdatert er det minste du kan gjøre for å forhindre at det blir utnyttet av angripere.

Autentisering

Det er en rekke måter du kan autentisere en API-bruker på. Den enkleste måten er å bruke brukernavn/passord-tilnærmingen, men det er for grunnleggende og er bare avhengig av hvor sterkt passordet er.

En annen måte er å bruke API-nøkler for å få tilgang til API. Du kan gi hver API-bruker en unik nøkkel som de kan bruke.

JWT-autentisering er en teknikk der brukerlegitimasjonen konverteres til et digitalt signert token og deretter sendes til brukeren. Brukeren sender deretter samme token tilbake på hver forespørsel til serveren for at serveren skal validere. JWT-er har også en utløpstid.

Den mest effektive løsningen er OAuth. Det gir tredjeparts tilgang til API med allerede eksisterende påloggingsinformasjon. For eksempel, hvis du allerede er logget på Google, kan et program bruke denne legitimasjonen til å logge på kontoen din uten å trenge et passord. Google-kontoen din blir passordet.

Autorisasjon

Autorisasjon er en annen ting enn autentisering. Mens du autoriserer en bruker, er de allerede autentisert til å bruke API-en din, og det er akkurat den API-ressursen de har tilgang til.

For eksempel kan en universitetsprofessor ha tilgang til alle studentene i en batch, men en enkelt student kan bare få tilgang til dataene deres. I dette tilfellet er studenten og professoren autentisert til det samme systemet, men er kun autorisert til å utføre visse handlinger.

Å sikre at API-autorisasjonen fungerer bra kan forhindre uautorisert tilgang til en ressurs.

Dataredaksjon

Dataredigering er prosessen med å selektivt avsløre informasjon til brukere og beskytte sensitiv informasjon. Riktig autorisasjon kan føre til bedre dataredigering. Personvernforskrifter som GDPR er også basert på dataredigering. Enhver uønsket tredjepart skal ikke være i stand til å kikke inn i personlige eller sensitive data.

Du kan implementere datareaksjon ved å implementere en mellomvare eller en gateway-manager.

Kryptering

Dette har blitt den viktigste sikkerhetskontrollen i dagens verden. Kryptering er et must hvis du har å gjøre med noen form for sensitiv informasjon. Den minste krypteringen du kan gjøre er å bruke HTTPS-protokollen, som bruker TLS (Transport Layer Security) håndtrykk og SSL (Secure Socket Layer).

End-to-end-kryptering er en annen måte å tett sikre dataene under overføring. Dataene som er lagret i databasen bør også være kryptert i tilfelle der en angriper kan være i stand til å bryte seg inn i databasen og få tilgang til dataene.

Feilhåndtering

Informasjon om applikasjonens infrastruktur kan lekkes til angripere via detaljerte feilmeldinger. For å unngå det, hold feilmeldingene generiske og implementer tilpasset feilhåndtering. Pass på at ingen sensitiv systeminformasjon er logget til feildetaljene.

Inndatavalidering og datarensing

Inndatavalidering er svært avgjørende når du arbeider med APIer fordi du ikke kjenner inndataene før brukeren sender den inn.

Sanering er prosessen med å fjerne eventuell uønsket kjørbar kode fra nyttelasten. En angriper kan legge inn et Javascript-skript, og hvis du ikke renser det før du sender det til HTML-en din, vil det kjøres som et skript og hente data.

Feil sanitisering kan føre til Cross-site scripting (XSS) angrep.

Inntrengningsdeteksjonssystemer

Også kjent som IDS, Intrusion Detection Systems hjelper til med å overvåke og oppdage nettverkstrafikk som kommer til API. Hvis den finner uvanlig oppførsel i trafikken, kan den logge og varsle berørte myndigheter.

Generelt er det to typer systemer: nettverksbasert og vertsbasert. I nettverksbaserte systemer er systemet fordelt på ulike sjekkpunkter for å overvåke trafikken på flere punkter. I et vertsbasert system distribueres det til en enkelt vert.

Slike systemer er en fin måte å finne ut hvem som prøver å få tilgang til nettverket ditt før de hindrer dataene dine.

IP-hvitelisting

IP-hvitelisting er en måte å tillate bare utvalgte IP-adresser å få tilgang til APIen og nettverket ditt. Denne teknikken fungerer kanskje ikke hvis du har et offentlig API fordi det er for komplisert å liste hver IP.

Det er fordelaktig hvis du vet at bare noen av systemenes applikasjoner skal få tilgang til API-en din.

JSON Web Tokens

JWT-er brukes vanligvis til å autentisere en bruker ved å sende brukeren et digitalt signert token opprettet fra deres legitimasjon. Det fungerer fordi det skjuler den faktiske legitimasjonen til brukeren, og du trenger heller ikke lagre legitimasjonen i databasen eller på brukersiden.

JWT kan deles inn i tre seksjoner: topptekst, nyttelast og signatur. Nyttelastdelen inneholder brukerlegitimasjonen, og overskriften kan inneholde informasjon som algoritmen som brukes. Signaturdelen signeres digitalt av serveren og klienten ved hver påfølgende forespørsel.

JWT-er har vanligvis en utløpsdato, hvoretter et nytt token genereres av serveren og deretter sendes til brukeren.

Logging og overvåking

Å overvåke trafikken til API-en din kan være fordelaktig for å oppdage og identifisere uønskede besøkende på forhånd. Du kan overvåke hver eneste forespørsel, men sørg for at loggene ikke inneholder sensitiv informasjon.

Satsbegrensende

Hvis en API ikke implementerer hastighetsbegrensning, er den sårbar for DDoS-angrep på grunn av den uventede tilstrømningen av nettverkstrafikk. Angripere kan oversvømme systemet med et stort antall forespørsler på kort tid, og til slutt krasjer serveren.

Begrensning og hastighetsbegrensende APIer unngår tjenestenektangrep ved å begrense flyten av API-trafikk.

Sikre avhengigheter

Sårbarheter dukker ikke bare opp fra API-koden din, de kan også være en del av eventuelle tredjepartsavhengigheter som du kanskje bruker i API-en din. Det er derfor det er viktig å regelmessig overvåke og skanne avhengighetene dine og oppdage eventuelle sårbarheter som kan være tilstede i dem.

Du kan implementere en planlagt jobb for å regelmessig skanne og oppdatere avhengigheter hvis de kan oppdateres med en oppdateringsversjon som fikser sårbarheten. Velg også avhengigheter som er sikrere og gir hyppige sikkerhetsoppdateringer.

Sikkerhetsoverskrifter skal returneres sammen med API-svaret for å instruere nettleseren om API-sikkerheten og hvordan den skal fungere. Viktige overskrifter du kan sende for å forbedre sikkerheten er:

  • Cache-Control: Sett den til no-store for å unngå å lagre sensitiv informasjon i nettleseren.
  • Content-Security-Policy: Hvis du setter den til frame-ancestors «ingen», unngår du innramming av API-svar i en iframe.
  • Innholdstype: Denne overskriften er viktig fordi uten den prøver nettleseren å gjette typen API-svar, og det kan føre til snusangrep. For JSON-svar kan du sette den til application/json.
  • X-Content-Type-Options: Sett den til nosniff for å instruere nettleseren om å ikke gjette MIME-typen til svaret og kun se etter den i Content-Type-overskriften.

Sikkerhetsstandarder og rammer

Design API-en din ved hjelp av forhåndsdefinerte sikkerhetsstandarder og rammeverk for å sikre at API-en din er oppdatert med de nyeste sikkerhetshensynene.

Token utløper

Hvis du bruker bærer-tokens, bør token-utløpstiden være kortvarig fordi den krever re-autentisering av brukeren, noe som er bra. I JWT er det vanligvis to tokens: tilgangs- og refresh-tokens. Oppdateringstokener er langvarige, mens tilgangstokener er kortvarige. I alle fall bør tokenene dine ha en utløpstid.

Brannmur for nettapplikasjoner

En WAF, aka Web Application Firewall, er en gateway som overvåker, filtrerer og blokkerer all ondsinnet nettverkstrafikk. Det er ofte den beste måten å forhindre ondsinnede angrep gjennom HTTP-protokollen.

Bruker API-gatewayer

Hvis du enkelt vil sette opp API-sikkerhet og administrere API-ruter og deres tilgang, kan du gå for API-gatewayer. De tilbyr også overvåkings-, logg- og analyseverktøy, som du kan bruke til å overvåke API-en din.

Null-tillit

Tanken bak null-tillit-strategien er ikke å stole på noen sentralisert kilde. Sikkerheten bør være lagdelt og implementert ved flere sjekkpunkter.

I utgangspunktet kan ingen stole på, selv utviklerne som jobber med API. Hver eneste gateway bør overvåkes og analyseres for å forhindre sikkerhetsbrudd.

Automatisering kommer godt med i slike tilfeller. Du kan bruke automatiserte verktøy for regelmessig å overvåke og blokkere uvanlig eller mistenkelig aktivitet.

Siste ord

Du kan bare gjøre så mye for å holde API-ene dine sikre. Det er alltid noen smutthull i programvare som kan utnyttes. Slike smutthull resulterer i nulldagssårbarheter. Så for å sikre API-ene dine er det minste du kan gjøre å holde dem oppdatert med de nyeste sikkerhetsstandardene.

Ta en titt på de beste dynamiske testverktøyene for applikasjonssikkerhet.