Varför testning av lösenordsåterställning försummas
De flesta utvecklare testar lösenordsåterställningsflödet en gång med sin egen e-postadress och anser det klart. Efter den femte testkörningen är inkorgen full med identiska "Återställ ditt lösenord"-meddelanden. Man tappar koll på vilken länk som hör till vilken körning och slutligen slutar man testa noggrant för att det är för jobbigt. Precis den typen av nonchalans låter allvarliga buggar ta sig in i produktion.
Vad du faktiskt behöver testa i ett lösenordsåterställningsflöde
En enkel "skickar den ett e-post"-kontroll räcker inte. OWASP Authentication Cheat Sheet beskriver en heltäckande uppsättning krav:
- E-postleverans — kommer återställningsmeddelandet fram, och snabbt nog?
- Länkkorrekthet — leder länken till rätt sida med rätt token?
- Tokenförfallodatum — avvisas en utgången token korrekt efter 25 timmar?
- Engångsanvändning — kan samma återställningslänk användas två gånger? Det ska inte vara möjligt.
- Tokenogiltigförklaring vid ny begäran — ogiltigförklaras den första token om användaren begär en ny återställning?
- SSO-konton — vad händer med OAuth-registrerade användare?
- Hastighetsbegränsning — finns det en gräns för återställningsbegäranden per adress?
Tillvägagångssättet med tillfällig e-post — steg för steg
Den renaste lösningen är en färsk tillfällig e-postadress för varje testkörning. Öppna en tillfällig inkorg, kopiera adressen, registrera ett testkonto i din applikation, utlös en återställning och se e-postmeddelandet anlända i realtid. Klicka länken, verifiera hela flödet och bekräfta att inloggning fungerar. För ett nytt scenario öppnar du bara en ny webbläsarflik.
Checklistan för tokensäkerhet
Lösenordsåterställningstokens är en vanlig attackyta. Enligt OWASP ska en säker implementering uppfylla:
- Minst 32 tecken, kryptografiskt slumpmässigt genererad
- Upphör inom 24 timmar, helst inom 1 timme
- Engångsanvändning — ogiltigförklaras omedelbart efter inlösen
- Ogiltigförklaras när en ny återställning begärs
- Hastighetsbegränsad per e-postadress
- Loggas aldrig i klartext
Inkludera lösenordsåterställning i din regressionssuite
Lösenordsåterställning går ofta sönder tyst när autentiseringsbibliotek uppdateras. Lägg åtminstone till ett grundläggande end-to-end-test: skapa ett testkonto programmatiskt, utlös en återställning, fånga upp det utgående e-postmeddelandet och verifiera token. Kontrollera din domäns autentiseringskonfiguration med MXToolbox och läs om verkliga intrång hos Troy Hunt för djupare perspektiv.