Waarom het testen van wachtwoord-reset wordt verwaarloosd
De meeste ontwikkelaars testen de wachtwoord-reset flow één keer met hun eigen e-mailadres en beschouwen het als klaar. Na de vijfde testrun is je inbox gevuld met identiek ogende "Reset je wachtwoord"-berichten. Je verliest het overzicht over welke link bij welke run hoort en uiteindelijk stop je met grondig testen omdat het te vervelend wordt. Precies die nalatigheid laat ernstige bugs de productie insluipen.
Wat je daadwerkelijk moet testen in een wachtwoord-reset flow
Een simpele "stuurt het een e-mail"-check is niet voldoende. Het OWASP Authentication Cheat Sheet beschrijft een uitgebreide set vereisten die elk apart getest moeten worden:
- E-mailbezorging — komt de reset-e-mail aan, en snel genoeg?
- Linkcorrectheid — gaat de link naar de juiste pagina met het juiste token?
- Token-vervaldatum — wordt een verlopen token correct geweigerd na 25 uur?
- Eenmalig gebruik — kan dezelfde resetlink twee keer worden gebruikt? Dat mag niet.
- Token-invalidatie bij nieuw verzoek — wordt het eerste token ongeldig als de gebruiker opnieuw een reset vraagt?
- SSO-accounts — wat gebeurt er met gebruikers die via OAuth zijn geregistreerd?
- Rate limiting — is er een limiet op reset-verzoeken per e-mailadres?
- E-mailenumeratie — verschilt de respons afhankelijk van of het adres bestaat?
De tijdelijke e-mailaanpak — stap voor stap
De schoonste oplossing is een vers tijdelijk e-mailadres voor elke testrun. Open een tijdelijke inbox, kopieer het adres, registreer een testaccount in je applicatie, vraag een wachtwoord-reset aan en bekijk de e-mail in realtime. Klik de link, verifieer de volledige flow en bevestig dat inloggen werkt. Voor een volgend scenario open je gewoon een nieuw browsertabblad. Geen opruimwerk, geen verwarring, geen risico op het klikken op de verkeerde link van een vorige run.
De token-beveiligingschecklist
Wachtwoord-resettokens zijn een veelvoorkomend aanvalsoppervlak. Volgens OWASP moet een veilige implementatie aan het volgende voldoen:
- Minimaal 32 tekens, cryptografisch willekeurig gegenereerd
- Vervalt binnen 24 uur, bij voorkeur binnen 1 uur
- Eenmalig gebruik — direct ongeldig na inwisseling
- Ongeldig gemaakt wanneer een nieuw reset wordt gevraagd
- Rate-limited per e-mailadres
- Nooit in plaintext gelogd
Hoe de reset-e-mail eruit moet zien
Een goede wachtwoord-reset-e-mail is eenvoudig en functioneel: een duidelijke onderwerpregel, één prominente knop, een duidelijke vervaldatummelding en een notitie dat de e-mail genegeerd kan worden als de gebruiker het niet heeft aangevraagd. Geen marketingtekst, geen social media-iconen. Controleer de authenticatieconfiguratie van je domein met MXToolbox en lees de e-mailauthenticatiegids als SPF, DKIM of DMARC onbekend zijn.
Voeg wachtwoord-reset toe aan je regressiesuite
Wachtwoord-reset breekt stil wanneer authenticatiebibliotheken worden bijgewerkt of e-mailproviders worden gewisseld. Voeg minimaal een basistest toe: maak programmatisch een testaccount aan, vraag een reset aan, onderschep de uitgaande e-mail en verifieer het token. Zelfs één geautomatiseerde controle na elke deployment vangt de meest voorkomende regressieklasse op. Troy Hunt biedt diepgaand inzicht in echte beveiligingsinbreuken en is aanbevolen verdere lectuur.