Li esta resposta e encontrei um comentário insistindo para não enviar a senha por email:
senhas não devem ser recuperadas por e-mail, eu odeio isso. Isso significa que minha senha é armazenada em texto simples em algum lugar. deve ser redefinido apenas.
Isso me levanta a questão de lidar com a opção Esqueceu a senha?
A qualquer custo, a senha bruta deve ser exibida em qualquer interface do usuário para que o usuário possa lê-la. Então, qual seria a maneira de lidar com "Esqueceu a senha"
Respostas:
Um bom design de aplicativo não poderá recuperar explicitamente uma senha de usuário. Isso ocorre porque geralmente é armazenado após ser executado por algum tipo de hash, que é uma operação unidirecional.
A melhor maneira de lidar com a senha perdida é realizar uma redefinição, enviando por e-mail para a conta do usuário um link com um parâmetro gerado anexado que identifique isso como uma redefinição de senha válida para a conta em questão. Nesse ponto, eles podem definir uma nova senha.
Isso pressupõe que você tenha um endereço de e-mail do usuário registrado.
fonte
Você não deve armazenar a senha principal do usuário como texto sem formatação, mas PODE armazenar uma senha temporária como texto sem formatação, ou seja,
o usuário redefine a senha -> a senha temporária é criada -> a senha temporária é enviada por e-mail -> o usuário é forçado a alterar a senha no próximo login (a nova senha não pode ser temporária, talvez)
fonte
O comentário é contra o envio da senha original por email, não o envio de nada por email. Se a instituição pode enviar a senha original, significa que a possui e isso é um problema de segurança. O comentarista não argumentou contra o envio de uma senha por email, porque isso é praticamente necessário na maioria dos casos.
A maneira correta é atribuir uma nova senha que possa ser usada uma vez, por qualquer motivo. Talvez já esteja marcado como expirado pelo sistema, talvez apenas faça login em uma página para alterar a senha gerada dinamicamente uma vez e apenas uma vez, qualquer que seja.
fonte
O que eu mais gosto é que o aplicativo envie um email para o usuário no endereço de email registrado com um link único válido por X horas que fornece uma página "Alterar senha".
O usuário pode definir a senha como preferir, sem correr o risco de colocá-la em um email.
fonte
Meu provedor de cartão de crédito tem uma opção de "senha esquecida" que faz algumas perguntas de segurança (isso não é imensamente seguro por si só, mas muitos bancos fazem isso) e gera um novo código e fornece metade da tela e envia e-mails na segunda metade para você. Dessa forma, você não pode quebrar a conta sem acessar a página da web e o endereço de email.
Eu perguntei um pouco sobre isso da perspectiva da usabilidade há um tempo.
fonte