State-parameter en CSRF
Krijg inzicht in hoe de parameter 'state' Cross-Site Request Forgery (CSRF)-aanvallen in OAuth2-flows tegengaat.
State-parameter en CSRF is een gratis OAuth2 en OpenID Connect diepgaand bekeken-les op CoddyKit. Dit is les 2 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 OAuth2 en OpenID Connect diepgaand bekeken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.
CSRF-aanvallen begrijpen
Heb je weleens gehoord van Cross-Site Request Forgery (CSRF)? Dit is een type aanval waarbij een aanvaller de webbrowser van een gebruiker ertoe misleidt een ongewenste actie uit te voeren op een vertrouwde website waarop de gebruiker momenteel is geauthenticeerd.
Je kunt het vergelijken met iemand die je handtekening vervalst op een document dat je niet wilde ondertekenen, waarbij die persoon gebruikmaakt van het bestaande vertrouwen tussen jou en de ontvanger.
De dreiging van CSRF voor OAuth2
Een CSRF-aanval kan in OAuth2 gevaarlijk zijn. Een aanvaller kan een gebruiker ertoe misleiden op een schadelijke link te klikken die een OAuth2-stroom naar een toepassing van de aanvaller start.
Als de gebruiker is ingelogd bij de autorisatieserver en toegang verleent, kan de autorisatiecode naar de client van de aanvaller worden gestuurd in plaats van naar de legitieme client. Hierdoor kunnen de gegevens van de gebruiker worden gecompromitteerd.
De parameter 'state' schiet te hulp
Om CSRF in OAuth2 tegen te gaan, gebruiken we de parameter state. Dit is een ondoorzichtige waarde die de clienttoepassing genereert en samen met het autorisatieverzoek verzendt.
De autorisatieserver stuurt vervolgens exact dezelfde waarde van state terug wanneer de gebruiker wordt teruggestuurd naar de client. Zo kan de client de authenticiteit van het verzoek controleren.
De client maakt een unieke 'state'
De clienttoepassing is verantwoordelijk voor het genereren van een unieke, onvoorspelbare waarde voor state voor elk autorisatieverzoek. Deze waarde moet cryptografisch sterk zijn en veilig worden opgeslagen in de sessie van de gebruiker (bijvoorbeeld in een cookie) aan de clientzijde.
Bekijk een eenvoudige manier om zo'n tekenreeks in Java te genereren:
import java.security.SecureRandom;
import java.util.Base64;
public class StateGenerator {
public static void main(String[] args) {
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[32]; // 32 bytes = 256 bits
random.nextBytes(bytes);
String state = Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(bytes);
System.out.println("Generated state: " + state);
}
}'state' in het verzoek verzenden
Wanneer de clienttoepassing de gebruiker naar de autorisatieserver doorstuurt om de OAuth2-stroom te starten, neemt de toepassing de gegenereerde parameter state op in de URL. Zo 'onthoudt' de autorisatieserver de state.
GET /authorize?
response_type=code&
client_id=myclientid&
redirect_uri=https://client.com/callback&
scope=profile&
state=YOUR_UNIQUE_STATE_HEREDe autorisatieserver stuurt 'state' terug
Nadat de gebruiker zich succesvol heeft geauthenticeerd en toestemming heeft verleend bij de autorisatieserver, stuurt de server de gebruiker terug naar de geregistreerde redirect_uri van de client.
Belangrijk is dat deze omleiding exact dezelfde parameter state bevat die de client oorspronkelijk heeft verzonden.
GET https://client.com/callback?
code=AUTHORIZATION_CODE&
state=YOUR_UNIQUE_STATE_HEREDe parameter 'state' verifiëren
Na ontvangst van de omleiding van de autorisatieserver voert de clienttoepassing een belangrijke controle uit:
- De client haalt de waarde van
stateuit de binnenkomende URL. - De client vergelijkt deze waarde met de
statedie oorspronkelijk is gegenereerd en opgeslagen in de sessie van de gebruiker.
Als de waarden niet overeenkomen, *moet* de client het verzoek weigeren.
De parameter 'state' in actie
Hoe voorkomt dit CSRF? Als een aanvaller een gebruiker probeert te misleiden, kent de aanvaller de legitieme waarde van state in de sessie van de gebruiker aan de clientzijde niet.
Wanneer het vervalste verzoek bij de client terugkomt, komt de parameter state in de URL niet overeen met de waarde die de client verwacht. De client weigert het verzoek en voorkomt zo de aanval.
Best practices voor de parameter 'state'
Volg deze richtlijnen om de parameter state zo effectief mogelijk te maken:
- Uniekheid: Genereer altijd een nieuwe, willekeurige state voor elk autorisatieverzoek.
- Opslag: Sla de waarde veilig op, meestal in een sessiecookie die aan de browsersessie van de gebruiker is gekoppeld.
- Verloop: Stel een korte verlooptijd in voor state om herhalingsaanvallen te voorkomen.
- Cryptografische sterkte: Gebruik een cryptografisch veilige generator voor willekeurige getallen om onvoorspelbaarheid te garanderen.
Korte controle: de parameter 'state'
Bekijk wat je hebt geleerd over de parameter state in OAuth2.
Samenvatting: beveiligen met 'state'
We hebben geleerd dat de parameter state een essentiële beveiligingsfunctie in OAuth2 is. Het is een unieke, willekeurige waarde die door de client wordt gegenereerd, naar de autorisatieserver wordt verzonden en vervolgens naar de client wordt teruggestuurd.
Door deze parameter te valideren kan de client de authenticiteit van het binnenkomende verzoek bevestigen, zich effectief tegen CSRF-aanvallen beschermen en een veilige autorisatiestroom garanderen.
Leer OAuth2 en OpenID Connect diepgaand bekeken 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
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “State-parameter en CSRF” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad OAuth2 en OpenID Connect diepgaand bekeken, waaronder “State-parameter en CSRF”, 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 OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.
Wat leer ik in “State-parameter en CSRF”?
Krijg inzicht in hoe de parameter 'state' Cross-Site Request Forgery (CSRF)-aanvallen in OAuth2-flows tegengaat. Je oefent met OAuth2 en OpenID Connect diepgaand bekeken 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 OAuth2 en OpenID Connect diepgaand bekeken te beginnen?
Ervaring vooraf is niet nodig. OAuth2 en OpenID Connect diepgaand bekeken 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 2 van 4.
Hoe lang duurt de les “State-parameter en CSRF”?
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 OAuth2 en OpenID Connect diepgaand bekeken?
Ja. Elke les over OAuth2 en OpenID Connect diepgaand bekeken 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
- Tokenbeveiliging (access/refresh)
- State-parameter en CSRF
- Best practices voor granttypen
- Redirect-URI's beveiligen