Progettando un nuovo flusso per una funzione "Ho dimenticato la password" che stiamo sviluppando, mi sono imbattuto in una domanda stimolante riguardante l'URL e l'impegno che deve essere fatto tra gli sviluppatori di frontend e back-end.
Anche se non è questo il punto della domanda, applico il flusso per una migliore comprensione del lettore.
- Richiesta di ripristino per un'email (frontend)
- Se l'e-mail fornita è presente o non invia risposta OK (backend)
- Genera un hash di reset casuale (se uno non è presente e non è scaduto, per evitare lo spam) (backend)
- Invia il link di ripristino @ email (backend) dell'utente
- Reindirizza a un URL con il modulo per la reimpostazione della password (frontend)
E c'è il punto in cui la domanda inizia.
Quali informazioni devono essere inviate (con l'URL) al front-end, in modo che il frontend sappia quale tipo di identificatore utente deve essere restituito?
Il mio primo pensiero è che il frontend deve restituire la password del nuovo utente insieme all'hash dall'email, in modo che il server ottenga le informazioni dell'utente dall'hash di corrispondenza con la richiesta di reset. Anche se qualcuno bruteforces gli hash e scopre una pagina di reimpostazione della password, non saprà mai per quale utente sta cambiando la password.
Mi manca qualcosa qui o questo è il modo più sicuro per gestire l'URL di reset, dato che la funzionalità di autenticazione a 2 fattori non è presente?
È così che il grande corpo gestisce la funzionalità di reset-link?
Grazie in anticipo!