Sto cercando di capire le best practice per lavorare con i token di reimpostazione della password.
Supponiamo che un utente avvii il processo di reimpostazione della password e che venga inviato via email il token di ripristino e che archiviamo una copia con hash nel database. Il token è timbrato nel nostro DB e verrà considerato scaduto, diciamo, per 24 ore.
Consideriamo ora due scenari per ciò che potrebbe accadere dopo:
1) L'utente pensa di non aver ricevuto l'e-mail, prova a reimpostare di nuovo. Dovremmo permettergli di generare un altro token? Se lo facciamo, dovremmo eliminare immediatamente il vecchio token? (Saranno tutti invalidi da 24 ore dopo il rilascio di datetime
comunque ...) Penso che ridurrebbe al minimo le chiamate di supporto se consentiremo un po 'di flessibilità purché scadano comunque. C'è un tipo di attacco che non sto considerando qui?
2) L'utente ha ricevuto l'e-mail e fa clic sul link di ripristino ma non completa il modulo di ripristino. Quando dovrei cancellare il token di reset? Solo dopo un reset corretto, l'utente può fare clic sul collegamento più e più volte durante le 24 ore e diventa non valido una volta reimpostata la password. O devo cancellare il token non appena fa clic sul link per qualche problema di sicurezza? (tutto ciò si verifica prima della scadenza)