Hoeveel apps heb je voor je elektrische auto? Komt de informatie die je krijgt van je apps met elkaar overeen? En heb je je ooit afgevraagd hoe deze gegevensstroom beveiligd wordt? Het is een kleine greep uit het explosief gebruik van API’s door heel veel apps op je telefoon.
API
Door het gebruik van mobiele apps wordt ons leven steeds makkelijker gemaakt. Ik hoef bijvoorbeeld niet naar een elektrische laadpaal te lopen om te kijken of de laadsessie klaar is. Deze gegevensstroom wordt mogelijk gemaakt door API’s die ervoor zorgen dat applicaties data met elkaar kunnen uitwisselen.
Helaas worden API’s vaak niet goed beveiligd of sterker nog: bedrijven hebben geen API-beveiliging architectuur! Dat is een groot risico, want het is ontzettend belangrijk om te weten wat de gevaren zijn en hoe deze gemitigeerd worden. Denk aan beleid, ontwerprichtlijnen voor je API en architectuur in relatie tot de functionele eisen en gebruikerswensen.
De vijf belangrijkste maatregelen om api’s te beveiligen
Microsoft heeft een service ontwikkeld die ervoor zorgt dat al het verkeer gecentraliseerd wordt: API Management binnen Azure. Deze service maakt het mogelijk om je security strategie op één centrale plaats af te dwingen en toe te passen.
Hieronder de vijf belangrijkste maatregelen die mogelijk zijn door het gebruik van API Management waarmee bedrijven haar API’s kunnen beveiligen.
Weet wie je API gebruikt
De belangrijkste securitymaatregel is het gebruik van authenticatie voordat een API gebruikt kan worden. Het mag een API niet ontbreken aan een API-beveiliging architectuur waar de authenticatie een belangrijke eis is.
Er zijn drie vormen van authenticatie mogelijk: basic, client certificaat en OAuth.
- De basic authenticatie zorgt ervoor dat er een combinatie van gebruikersnaam en wachtwoord nodig is;
- De client certificaat authenticatie dwingt af er een certificaat gebruikt die vertrouwd wordt door API Management;
- De OAuth authenticatie dwingt een proces af waarin eerst een access token opgevraagd moet worden.
Stel eisen aan je API
Op nummer twee staat het beperken van toegang tot de API: een gebruiker moet eerst voldoen aan bepaalde voorwaarden voor dat een API gebruikt kan worden. Per situatie moet er bepaald worden welke voorwaarden afgedwongen moeten worden. Denk aan:
- Controle op specifieke header informatie die vereist is;
- Een gesteld limiet van het aantal calls die in korte tijd toegestaan zijn, dit vooral op grootschalige aanvallen op een API af te weren;
- Enkel verkeer toestaan vanaf een bepaald IP adres;
- Als opvolging van de authenticatie moet de token of certificaat eerst gevalideerd zijn.
Bij voorkeur moet minimaal één van de bovenstaande maatregelen toegepast worden op je API.
Laat niet te veel informatie zien
Een derde maatregel/eis heeft betrekking op het aanpassen van API requests en responses. Deze informatie kan namelijk gevoelige informatie bevatten die als leesbare tekst zichtbaar is binnen de API informatie. Veel gebruikte transformaties zijn:
- Het vervangen van gevoelige informatie door eerst te zoeken naar gevoelige velden met als post actie het wijzigen van de data of zelfs verwijderen uit bijvoorbeeld een response;
- Het wijzigen van de backend informatie zodat een kwaadwillende niet weet waar de aanvraag naar toe gerouteerd wordt. Kan namelijk voor een hacker zeer interessante informatie zijn.
- Het verwijderen van specifieke parameters die meegestuurd wordt met een API call zoals een subscription key. Een kwaadwillende kan namelijk de subscription key hergebruiken voor onjuist gebruik van de API.
Bewaak al je API’s
In geval van incidenten is het belangrijk dat alle API’s bewaakt worden. Monitoring zorgt ervoor dat er goede probleemonderzoek kan plaats vinden en mogelijk nog veel belangrijk het snel constateren van problemen door middel van alerting op bepaalde logging. Monitoring valt onder de advanced policy’s van API Management:
- Het verzenden van log gegevens naar een monitoring component in Azure.
Voorkom toegang vanuit een ander domein
Door het toepassen van cross-domain policies kan je voorkomen dat een API aangeroepen wordt vanuit een andere dubieus domein die anders is dan de (web) applicatie. Het zorgt ervoor dat er scripts van hackers geen toegang hebben tot de API’s.