Il motivo per cui inviare agli utenti le loro password in chiaro di corrente è brutto in quanto "le password devono essere memorizzate in modo che nessuno sul lato server debba mai essere in grado di recuperare la password in chiaro di un utente una volta inserita "(che significa anche root). Il motivo per cui le password sono hash in primo luogo è proprio in modo che l'unica persona che può conoscere la password sia l'utente che l'ha inserita. Questo è l'unico modo per garantire che l'utente non possa ripudiare le azioni intraprese sulla base del fatto che qualcun altro conosce la propria password.
(Per ulteriori informazioni storiche su come funziona l'hashing della password e perché è importante, vedere la mia risposta a Perché l'hash MD5 parte da $ 1 $ e SHA-512 da $ 6 $? Isn ' t debolezza di per sé? )
Inviando agli utenti una nuova password temporanea aggira questo problema, ma crea almeno altri due problemi, come menzionato da Troy Hunt sul suo blog link (riferimento all'articolo 9 delle FAQ degli sviluppatori sul sito plaintextoffenders: link , che è stato menzionato nei commenti sulla domanda stessa):
- l'utente viene immediatamente bloccato dal proprio account con la normale password, che se non fosse quella che si aspetta di reimpostare la propria password crea un attacco Denial of Service (DOS) immediato e
- la pagina di accesso in cui il sito si aspetta di ricevere la password temporanea non ha modo di sapere che è temporanea e, se non implementata correttamente, la password temporanea potrebbe rimanere più a lungo accettabile in questo contesto.
Per evitare questi problemi, la pagina di destinazione della reimpostazione della password è separata dal normale processo di accesso, ha un valore segreto che può essere applicato con un https: URL e non annulla la password dimenticata fino a quando la proprietà dell'account non è stata ristabilito dallo scambio di questo valore con l'utente via email.