English | 中文版 | Português (Brasil) | Français | 한국어 | Indonesia | ไทย | Русский | Українська
Checklist met de belangrijkste tegenmaatregelen bij het ontwerpen, testen en uitbrengen van een API.
- Gebruik geen
Basic AuthGebruik industrie standaarden (v.b. JWT, OAuth). - Vind het wiel niet opnieuw uit voor
Authenticatie,Genereren van TokensenOpslaan van Wachtwoorden. Gebruik de standaarden.
- Gebruik random ingewikkelde keys (
JWT Secret) om brute forcing lastiger te maken. - Haal het algoritme niet uit de payload. Dwing het algoritme af in de backend (
HS256ofRS256). - Zet de token vervaltijd (
TTL,RTTL) zo kort mogelijk. - Sla geen gevoelige data op in de JWT payload, deze is makkelijk te decoderen.
- Valideer ALTIJD de
redirect_uriop de server om alleen toegestane URL te accepteren. - Probeer altijd een exchange voor code, niet voor tokens (sta
response_type=tokenniet toe). - Gebruik de
stateparameter met een random hash om CSRF op een OAuth authentication process te voorkomen. - Definieer een standaard scope, en valideer deze scope parameter voor elke applicatie.
- Limiteer het aantal requests om DDoS en/of Bruteforce aanvallen te ontkrachten.
- Gebruik HTTPS aan de server zijde om MITM (Man In The Middle Attacks) tegen te gaan.
- Gebruik de
HSTSheader i.c.m SSL om een SSL Strip attack te ontkrachten.
- Gebruik de correcte HTTP methode voor de operatie,
GET (lezen),POST (schrijven),PUT (vervangen/updaten)andDELETE (verwijderen). - Valideer de
content-typeheader bij een request Accept header (Content Negotiation) om alleen de ondersteunde formaten toe te staan (e.g.application/xml,application/json... etc) en stuur een406 Not Acceptableresponse als decontent-typeniet ondersteund is. - Valideer de
content-typeheader van gestuurde data (e.g.application/x-www-form-urlencoded,multipart/form-data ,application/json... etc ). - Valideer de gebruiker invoer om veel voorkomende kwetsbaarheden te voorkomen (v.b.
XSS,SQL-Injection,Remote Code Execution... etc). - Gebruik geen gevoelige data (
credentials,Wachtwoorden,security tokens, ofAPI keys) in de URL, maar gebruik de standaard Authorization header.
- Controleer dat alle endpoints zijn beschermd achter de authenticatie om het omzeilen van authenticatie te voorkomen.
- Gebruik
/me/ordersi.p.v./user/654321/ordersom het 'lekken' van id's te voorkomen. - Gebruik geen auto increment id's. Maak gebruik van
UUID. - Als je XML files parsed, controleer dat entity parsing niet aan staat om
XXE(XML external entity attack) te voorkomen. - Als je XML files parsed, controleer dat entity expansion niet aan staat om
Billion Laughs/XML bombte voorkomen viaexponential entity expansion attack. - Gebruik CDN voor het uploaden van bestanden.
- Als er met grote/mega hoeveelheden data gewerkt wordt, gebruik dan Workers en Queues om snel een response te geven en HTTP Blocking te voorkomen.
- Vergeet niet om de DEBUG mode uit te zetten.
- Stel de
X-Content-Type-Options: nosniffheader in. - Stel de
X-Frame-Options: denyheader in. - Stel de
Content-Security-Policy: default-src 'none'header in. - Verwijder vingerafdruk headers -
X-Powered-By,Server,X-AspNet-Versionetc. - Dwing
content-typeheaders af voor de response. Als jeapplication/jsonantwoordt, dan is decontent-type:application/json. - Stuur geen gevoelige data terug:
Gebruikersnamen,Wachtwoorden,security tokens. - Geef de correcte HTTP antwoord code terug op basis van de uitgevoerde operatie (v.b.
200 OK,400 Bad Request,401 Unauthorized,405 Method Not Allowed... etc).
Translation by | Vertaling door :S.Holzhauer
Feel free to contribute, fork -> edit -> submit pull request. For any questions drop us an email at team@shieldfy.io.