19 API-säkerhet bästa praxis att implementera och vara säker

API-säkerhet är en av de viktigaste aspekterna du behöver ta hand om i nästan alla applikationer.

Nuförtiden är API:er det bästa sättet att integrera din applikation med andra applikationer. De tillhandahåller en inkörsport till din applikation, och därför måste API:erna vara tillräckligt säkra så att du inte får några oönskade besökare.

Låt oss titta på några API-sårbarheter som kan vara ett hot mot din applikation.

Vanliga API-sårbarheter

#1. Cross-site scripting (XSS)

XSS-attacker är vanliga i webbapplikationer men kan också ske via API:er om inkommande användardata inte saneras ordentligt. Angripare kan köra skadliga skript på servern och få tillgång till känslig data.

#2. Prisbegränsande överträdelse

Brott mot den hastighetsbegränsande funktionen i API:t kan ge angripare chansen att bombardera din server med ett stort antal förfrågningar. Så småningom kan servern krascha och din kundbas kan ha svårt att nå dig.

#3. Felaktig autentisering

Om API:et inte är korrekt konfigurerat med en tillförlitlig autentiseringsmetod kan vilken tredje part som helst komma åt ditt system via API:et. Auktorisering är också viktigt eftersom det definierar vem som kan komma åt vilken API-resurs fram till en viss tid.

#4. Osäker dataöverföring

Datan som skickas till konsumenterna av ditt API måste krypteras på vägen. Om det inte är det, finns det chanser att data kan läcka av angripare som använder en man-i-mitten-attack. Det är därför det alltid rekommenderas att använda ett säkert protokoll som HTTPS för att överföra data.

#5. Utfasade/föråldrade beroenden

API:er har många externa beroenden som används för att utföra komplexa uppgifter och för att avlasta en del komplex logik. Om dessa beroenden har en sårbarhet blir ditt API indirekt också sårbart. Se alltid till att uppdatera beroendeversionerna.

Nu när du känner till API-sårbarheter, låt oss titta på några bästa metoder för att säkra ditt API.

Läs också: Bästa Postman-alternativen för att testa API för utvecklare

API-säkerhet – bästa praxis

API-versionering

Det är viktigt att regelbundet övervaka och uppdatera dina API:er med uppdaterade beroenden, eftersom dessa beroenden kan innehålla stora sårbarheter. Du kan meddela API-användarna genom att släppa en patchversion av API:t enligt semantisk versionering.

Att hålla ditt API uppdaterat är det minsta du kan göra för att förhindra att det utnyttjas av angripare.

Autentisering

Det finns ett gäng sätt på vilka du kan autentisera en API-användare. Det enklaste sättet är att använda tillvägagångssättet för användarnamn/lösenord, men det är för grundläggande och beror bara på hur starkt lösenordet är.

Ett annat sätt är att använda API-nycklar för att komma åt API. Du kan ge varje API-användare en unik nyckel som de kan använda.

JWT-autentisering är en teknik där användaruppgifterna konverteras till en digitalt signerad token och sedan skickas till användaren. Användaren skickar sedan samma token tillbaka på varje begäran till servern för att servern ska validera. JWT har också en utgångstid.

Den mest effektiva lösningen är OAuth. Det ger tredje parts åtkomst till API med redan befintliga inloggningsuppgifter. Om du till exempel redan är inloggad på Google kan en applikation använda dessa uppgifter för att logga in på ditt konto utan att behöva ett lösenord. Ditt Google-konto blir lösenordet.

Tillstånd

Auktorisering är en annan sak än autentisering. Medan du auktoriserar en användare är de redan autentiserade att använda ditt API, och det är bara den API-resurs de kan komma åt.

Till exempel kan en universitetsprofessor ha tillgång till alla studenter i en grupp, men en enskild student kan bara komma åt deras data. I det här fallet är studenten och professorn autentiserade till samma system men har endast behörighet att utföra vissa åtgärder.

Att säkerställa att API-auktoriseringen fungerar bra kan förhindra obehörig åtkomst till en resurs.

Dataredigering

Dataredigering är processen att selektivt avslöja information för användare och skydda känslig information. Korrekt auktorisering kan leda till bättre dataredigering. Datasekretessbestämmelser som GDPR är också baserade på dataredigering. Alla oönskade tredje parter ska inte kunna kika in i personliga eller känsliga uppgifter.

Du kan implementera datareaktion genom att implementera en mellanprogramvara eller en gatewayhanterare.

Kryptering

Detta har blivit den viktigaste säkerhetskontrollen i dagens värld. Kryptering är ett måste om du har att göra med någon form av känslig information. Den minsta kryptering du kan göra är att använda HTTPS-protokollet, som använder TLS (Transport Layer Security) handskakning och SSL (Secure Socket Layer).

End-to-end-kryptering är ett annat sätt att säkra data under överföring. Data som lagras i databasen bör också krypteras om en angripare skulle kunna bryta sig in i databasen och komma åt data.

Felhantering

Information om applikationens infrastruktur kan läcka ut till angripare via detaljerade felmeddelanden. För att undvika det, håll felmeddelandena allmänna och implementera anpassad felhantering. Se till att ingen känslig systeminformation loggas till feldetaljerna.

Indatavalidering och datasanering

Indatavalidering är mycket avgörande när man hanterar API:er eftersom du inte känner till indata förrän användaren skickar in den.

Sanering är processen att ta bort all oönskad körbar kod från nyttolasten. En angripare kan mata in ett Javascript-skript, och om du inte sanerar det innan du skickar det till din HTML, kommer det att köras som ett skript och hämta data.

Felaktig sanering kan leda till Cross-site scripting (XSS) attacker.

Intrångsdetekteringssystem

Även känd som IDS, Intrusion Detection Systems hjälper till att övervaka och upptäcka nätverkstrafik som kommer till API:et. Om den upptäcker något ovanligt beteende i trafiken kan den logga och varna berörda myndigheter.

Generellt finns det två typer av system: nätverksbaserade och värdbaserade. I nätverksbaserade system är systemet fördelat på olika kontrollpunkter för att övervaka trafiken på flera punkter. I ett värdbaserat system distribueras det till en enda värd.

Sådana system är ett utmärkt sätt att avgöra vem som försöker komma åt ditt nätverk innan de hindrar din data.

IP-vitlista

IP-vitlista är ett sätt att tillåta endast utvalda IP-adresser att komma åt ditt API och ditt nätverk. Den här tekniken kanske inte fungerar om du har ett offentligt API eftersom det är för komplicerat att lista varje IP.

Det är fördelaktigt om du vet att bara några av systemens applikationer kommer att komma åt ditt API.

JSON webbtokens

JWT:er används vanligtvis för att autentisera en användare genom att skicka en digitalt signerad token till användaren som skapats från deras autentiseringsuppgifter. Det fungerar eftersom det döljer användarens faktiska inloggningsuppgifter, och du behöver inte heller lagra inloggningsuppgifterna i databasen eller på användarsidan.

JWT kan delas in i tre sektioner: rubrik, nyttolast och signatur. Nyttolastsektionen innehåller användaruppgifterna och rubriken kan innehålla information som algoritmen som används. Signatursektionen signeras digitalt av servern och klienten vid varje efterföljande begäran.

JWT har i allmänhet ett utgångsdatum, efter vilket en ny token genereras av servern och sedan skickas till användaren.

Loggning och övervakning

Att övervaka trafiken till ditt API kan vara fördelaktigt för att upptäcka och identifiera oönskade besökare i förväg. Du kan övervaka varje begäran, men se till att loggarna inte innehåller någon känslig information.

Prisbegränsande

Om ett API inte implementerar hastighetsbegränsning är det sårbart för DDoS-attacker på grund av det oväntade inflödet av nätverkstrafik. Angripare kan översvämma systemet med ett stort antal förfrågningar på kort tid, och så småningom krascha servern.

Strypning och hastighetsbegränsande API:er undviker överbelastningsattacker genom att begränsa flödet av API-trafik.

Säkra beroenden

Sårbarheter uppstår inte bara från din API-kod, de kan också vara en del av eventuella tredjepartsberoenden som du kan använda i ditt API. Det är därför det är viktigt att regelbundet övervaka och skanna dina beroenden och upptäcka eventuella sårbarheter som kan finnas i dem.

Du kan implementera ett schemalagt jobb för att regelbundet skanna och uppdatera beroenden om de kan uppdateras med en patchversion som åtgärdar sårbarheten. Välj också beroenden som är säkrare och ger frekventa säkerhetsuppdateringar.

Säkerhetsrubriker ska returneras med API-svaret för att instruera webbläsaren om API-säkerheten och hur den ska agera. Viktiga rubriker som du kan skicka för att förbättra säkerheten är:

  • Cache-Control: Ställ in den på no-store för att undvika att lagra känslig information i webbläsaren.
  • Content-Security-Policy: Genom att ställa in den till frame-ancestors ’ingen’ undviker du att rama in API-svar i en iframe.
  • Innehållstyp: Den här rubriken är viktig för utan den försöker webbläsaren gissa typen av API-svar, och det kan leda till snisattacker. För JSON-svar kan du ställa in det på application/json.
  • X-Content-Type-Options: Ställ in den på nosniff för att instruera webbläsaren att inte gissa MIME-typen för svaret och att endast leta efter det i Content-Type-huvudet.

Säkerhetsstandarder och ramar

Designa ditt API med hjälp av fördefinierade säkerhetsstandarder och ramverk för att säkerställa att ditt API är uppdaterat med de senaste säkerhetsaspekterna.

Tokens utgång

Om du använder bärartokens bör tokens utgångstiden vara kort eftersom det kräver omautentisering av användaren, vilket är bra. I JWT finns det vanligtvis två tokens: åtkomst- och refresh-tokens. Refresh-tokens är långlivade, medan åtkomsttokens är kortlivade. I vilket fall som helst bör dina tokens ha en utgångstid.

Webbapplikationsbrandvägg

En WAF, aka Web Application Firewall, är en gateway som övervakar, filtrerar och blockerar all skadlig nätverkstrafik. Det är ofta det bästa sättet att förhindra skadliga attacker genom HTTP-protokoll.

Använder API-gateways

Om du enkelt vill ställa in API-säkerhet och hantera API-rutter och deras åtkomst kan du välja API-gateways. De tillhandahåller också övervaknings-, loggnings- och analysverktyg som du kan använda för att övervaka ditt API.

Noll-förtroende

Tanken bakom nollförtroendestrategin är att inte lita på någon centraliserad källa. Säkerheten bör vara skiktad och implementerad vid flera kontrollpunkter.

I grund och botten kan ingen lita på, även utvecklarna som arbetar med API:et. Varje gateway bör övervakas och analyseras för att förhindra säkerhetsintrång.

Automatisering kommer väl till pass i sådana fall. Du kan använda automatiserade verktyg för att regelbundet övervaka och blockera ovanlig eller misstänkt aktivitet.

Slutord

Du kan bara göra så mycket för att hålla dina API:er säkra. Det finns alltid några kryphål i programvara som kan utnyttjas. Sådana kryphål resulterar i nolldagssårbarheter. Så för att säkra dina API:er är det minsta du kan göra att hålla dem uppdaterade med de senaste säkerhetsstandarderna.

Ta en titt på de bästa dynamiska testverktygen för applikationssäkerhet.