"Esqueceu a senha" - Como lidar com isso?

18

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"

Gopi
fonte
Passei apenas 15 minutos explicando o PHPBB esqueci a senha.
Peter Turner
Possível duplicata do processo de redefinição
gnat
1
@gnat Você teve a chance de verificar qual era o mais velho dos dois?
Gopi
1
@TechJerk idade das perguntas não importa como explicado aqui
gnat

Respostas:

35

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.

Chris
fonte
Existem "práticas recomendadas" adicionais que, embora não sejam críticas (como não armazenar as senhas em primeiro lugar), devem estar em vigor se o tempo permitir, incluindo a possibilidade de o token de acesso temporário expirar em determinados eventos e ao longo do tempo (para que a conta de alguém não será comprometido se a caixa de entrada for).
Steven
7

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)

Viper_Sb
fonte
2
Eu fiz isso em vários sites. Embora você possa argumentar que um bisbilhoteiro de correio pode obter a senha, ele também pode receber qualquer outro token temporário, etc. Essa abordagem é mais simples para o usuário (ele pode copiar e colar ou até mesmo digitar a senha temporária) e não recebe um golpe de segurança.
26510 Kate
A menos que alguém esteja usando uma maneira segura de se conectar ao servidor de correio (por exemplo, correio da Web via HTTPS ou POP3 sobre TLS), essa comunicação pode ser facilmente detectada. Nesse caso, alguns "haX0r" poderiam facilmente fazer login na conta de outro usuário. É por isso que é uma má ideia. O link de redefinição deve ser enviado como Chris sugere e a pergunta de segurança acompanhada deve ser feita antes de permitir que o usuário altere sua senha. Ainda não é 100% seguro (é possível adivinhar quantas vezes as respostas a essas perguntas de segurança), mas não consigo encontrar uma solução melhor.
Paweł Dyda 28/10/10
2
@Pawel Dyda Um link de redefinição também pode ser detectado, se o seu email estiver sendo detectado, acho que ter uma senha temporária no seu email é a menor das suas preocupações.
Viper_Sb 28/10/10
Por isso escrevi sobre uma questão de segurança.
Paweł Dyda 28/10/10
5

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.

David Thornley
fonte
4

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
4

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.

glenatron
fonte