Cyber Security Academy · Les

Tokenaanvallen en hardening

Auth-flows beschermen tegen misbruik

Les 4 van 413 stappen

Tokenaanvallen en hardening is een gratis Cyber Security Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cyber Security Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cyber Security Academy bevat in totaal 4 lessen.

Tokens als inloggegevens

In moderne authenticatie zijn tokens inloggegevens. Wie een geldig token bezit, wordt behandeld als de geauthenticeerde partij totdat het token verloopt of wordt ingetrokken.

  • Daardoor staat tokendiefstal gelijk aan diefstal van inloggegevens.
  • De beveiliging richt zich op het beperken van de geldigheidsduur van tokens, het binden van tokens aan een bezitter en het mogelijk maken van snelle intrekking.

Deze les behandelt aanvallen op OAuth/OIDC/SAML-tokens en de beveiligingsmaatregelen die daartegen beschermen.

Verwarring tussen JWT-algoritmen

Een klassieke JWT-aanval maakt misbruik van de header alg.

  • alg: none stelt een aanvaller in staat om niet-ondertekende tokens te vervalsen als deze waarde wordt geaccepteerd.
  • Verwarring tussen RS256 en HS256: de aanvaller ondertekent een token opnieuw met de openbare RSA-sleutel als HMAC-geheim.

Verdediging: leg het verwachte algoritme aan serverzijde vast en laat het token nooit bepalen welk verificatiepad wordt uitgevoerd.

Vulnerable: verify(token, key)  // alg taken from header
Hardened:   verify(token, key, { algorithms: ["RS256"] })
// reject alg:none, reject HS* when RS* expected

Tokendiefstal via XSS en logboeken

De meest voorkomende manier waarop tokens worden gecompromitteerd, is eenvoudige diefstal van een geldig token.

  • XSS leest tokens uit localStorage of uit het geheugen.
  • Tokens in URL's lekken via browsergeschiedenis, verwijzende headers en serverlogboeken.
  • Uitgebreid loggen van Authorization-headers.

Gebruik voor browsersessies bij voorkeur httpOnly-, Secure- en SameSite-cookies en schrap tokens uit logboeken en URL's.

Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// keeps JS (and thus XSS) from reading the token

Replayaanvallen

Bij een replayaanval wordt een onderschept geldig token opnieuw gebruikt om als het slachtoffer te handelen.

  • Dit wordt beperkt door korte vervaltijden, eenmalige nonce (OIDC) en het bijhouden van assertie-ID's (SAML).
  • TLS voorkomt passief onderscheppen via het netwerk.
  • Afzendergebonden tokens voorkomen hergebruik, zelfs als ze worden gestolen.
Replay defenses:
  short exp + nonce/jti uniqueness
  TLS everywhere
  sender-constrained tokens (mTLS / DPoP)

Tokens met afzenderbinding

Tokens die alleen door bezit worden beschermd, kan iedereen gebruiken die ze in handen krijgt. Afzendergebonden tokens binden een token aan een specifieke clientsleutel.

  • mTLS-gebonden tokens (RFC 8705) koppelen het token aan het TLS-certificaat van de client.
  • DPoP (RFC 9449) bindt het token aan een sleutel voor bewijs van bezit, waarmee de client elk verzoek ondertekent.

Een gestolen token is dan waardeloos zonder de bijbehorende privésleutel.

DPoP: each request carries a signed proof JWT
  DPoP: <proof-jwt signed with client private key>
  Authorization: DPoP <access_token>

Korte geldigheidsduur en rotatie van vernieuwtokens

Beperk de periode waarin een gestolen token bruikbaar is.

  • Houd toegangstokens kort geldig (minuten).
  • Gebruik rotatie van vernieuwtokens: bij elke vernieuwing wordt een nieuw vernieu-token uitgegeven en het oude ongeldig gemaakt.
  • Detecteer hergebruik van een geroteerd vernieuwtoken als signaal van diefstal en trek de hele keten in.
On /token refresh:
  issue new RT, invalidate old RT
  if old RT presented again -> breach -> revoke family

Intrekking en introspectie van tokens

Zelfstandige JWT's blijven geldig tot ze verlopen, wat intrekking lastiger maakt. Bied mechanismen om toegang snel af te sluiten.

  • Een intrekkingseindpunt (RFC 7009) maakt vernieuw- en toegangstokens ongeldig.
  • Met introspectie (RFC 7662) kan een resourceserver in realtime de status van een token controleren.
  • Houd voor kritieke intrekkingen een blokkeerlijst bij op basis van jti.
POST /introspect  token=...
  -> { "active": true, "sub": "...", "scope": "read" }
POST /revoke      token=...

Handhaving van doelgroep en bereik

Een geldig token is niet automatisch geautoriseerd voor jouw API. Controleer waarvoor het bedoeld is.

  • Controleer aud, zodat een token dat voor een andere service is uitgegeven niet bij jouw API kan worden hergebruikt.
  • Handhaaf het bereik per eindpunt; neem niet aan dat een geldig token volledige toegang betekent.
  • Valideer iss om tokens van onbetrouwbare uitgevers te blokkeren.

Zo voorkom je hergebruik van tokens tussen services en misbruik van een verwarde plaatsvervanger.

Verwisselings- en provideroverschrijdende aanvallen

Wanneer een client meerdere identiteitsproviders ondersteunt, kunnen verwisselingsaanvallen de client ertoe verleiden een code of token dat door de ene IdP is uitgegeven naar een ander, door de aanvaller gekozen eindpunt te sturen.

  • De client raakt kwijt van welke AS een respons afkomstig is.
  • Verdediging: koppel responses met behulp van de parameter iss (RFC 9207) aan de uitgever en valideer state per provider.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started with

Veilige opslag en overdracht

Waar en hoe tokens worden opgeslagen, bepaalt de blootstelling.

  • Browsersessies: httpOnly-, Secure- en SameSite-cookies; vermijd localStorage.
  • Mobiele apparaten: de sleutelketen of sleutelopslag van het besturingssysteem, nooit bestanden zonder versleuteling.
  • Servers: een geheimenbeheerder, versleuteling bij opslag en minimale bevoegdheden.
  • Gebruik tijdens overdracht altijd TLS; neem tokens nooit op in URL-query's.

Checklist voor het versterken van tokens

Breng de maatregelen samen in een operationele basislijn.

  • Leg algoritmen vast; wijs alg: none en verwarringsaanvallen af.
  • Valideer iss, aud, exp, signature, nonce/state.
  • Korte geldigheidsduur van toegangstokens plus rotatie van vernieuwtokens met detectie van hergebruik.
  • Geef voor API's met hoge waarde de voorkeur aan afzendergebonden tokens (DPoP/mTLS).
  • Ondersteun intrekking en introspectie.
  • Sla tokens veilig op; houd ze uit URL's en logboeken.
Hardening baseline:
  [ ] alg pinned, none rejected
  [ ] iss/aud/exp/sig/nonce validated
  [ ] short TTL + RT rotation + reuse detection
  [ ] DPoP/mTLS for sensitive scopes
  [ ] revoke + introspect available

Korte controle: gestolen tokens onschadelijk maken

Kies de maatregel die de schade door tokendiefstal zelf het best beperkt.

Samenvatting: tokenaanvallen en beveiliging

Belangrijkste punten:

  • Tokens zijn inloggegevens; diefstal staat gelijk aan accountovername.
  • Bescherm JWT's door algoritmen vast te leggen en iss, aud, exp, signature, nonce te valideren.
  • Beperk de blootstelling met een korte geldigheidsduur en rotatie van vernieuwtokens met detectie van hergebruik.
  • Afzendergebonden tokens (DPoP/mTLS) maken gestolen tokens voor toonder onbruikbaar.
  • Bied intrekking en introspectie en houd tokens uit URL's, logboeken en localStorage.
Gratis beginnen

Leer Cyber Security Academy met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
303

Veelgestelde vragen

Is de les “Tokenaanvallen en hardening” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Cyber Security Academy, waaronder “Tokenaanvallen en hardening”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Cyber Security Academy bevat in totaal 4 lessen.

Wat leer ik in “Tokenaanvallen en hardening”?

Auth-flows beschermen tegen misbruik Je oefent met Cyber Security Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Cyber Security Academy te beginnen?

Ervaring vooraf is niet nodig. Cyber Security Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Tokenaanvallen en hardening”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Cyber Security Academy?

Ja. Elke les over Cyber Security Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. OAuth 2.0-flows
  2. OpenID Connect (OIDC)
  3. SAML en federation
  4. Tokenaanvallen en hardening
← Terug naar Cyber Security Academy