Pergunta

Eu estou querendo saber qual é o melhor método para a criação de uma função de senha esqueceu em um site. Eu vi um fora muito poucos lá, aqui estão alguns ou a combinação de:

  • pergunta senha / resposta (1 ou mais)
  • Enviar e-mail com a nova senha
  • na tela dão nova senha
  • confirmação por e-mail: deve clicar no link para obter nova senha
  • página que requer usuário digite uma nova senha

Que combinação ou passos adicionais que você adicionar a uma esqueceu função de senha? Eu estou querendo saber sobre como eles pedir a nova senha e como eles acabam ficando-lo.

Eu estou operando no princípio de que a senha não pode ser recuperada; uma nova senha deve ser dada / gerado.

Editar eu como o que Cory disse sobre não exibir se o usuário existe, mas eu estou querendo saber o que será exibido em seu lugar. Estou pensando metade do problema é que o usuário esqueceu qual endereço de e-mail que eles usaram, que exibindo algum tipo de "não existe" mensagem é útil. Todas as soluções?

Foi útil?

Solução

  1. Eu, pessoalmente, iria enviar um e-mail com um link para uma página de curto prazo que lhes permite definir uma nova senha. Faça o nome da página algum tipo de UID.
  2. Se isso não apelar para você, em seguida, enviar-lhes uma nova senha e forçando-os a alterá-lo no primeiro acesso faria bem.

A opção 1 é muito mais fácil.

Outras dicas

Algumas preocupações de segurança importantes:

  • Uma pergunta senha / resposta, na verdade, reduz a segurança, uma vez que normalmente torna-se o elo mais fraco no processo. É muitas vezes mais fácil de adivinhar a resposta de alguém do que é uma senha -. Particularmente se as perguntas não são cuidadosamente escolhidos
  • e-mails Assumindo operar como o nome de usuário em seu sistema (que é geralmente recomendado para uma variedade de razões), a resposta a um pedido de redefinição de senha não deve indicar se uma conta válida foi encontrada. Deve simplesmente afirmar que um e-mail de solicitação de senha foi enviada para o endereço fornecido. Por quê? A resposta indicando que um e-mail faz / não existe permite que um hacker para colher uma lista de contas de usuários através da apresentação de vários pedidos de senha (normalmente através de um proxy HTTP como suíte arroto) e observando se o e-mail é encontrado. Para proteger da colheita de login você deve assegurar nenhum login / auth funções relacionadas fornecer qualquer indicação de quando e-mail de um usuário válido foi inserido em um login / pass forma de reset.

Para obter mais fundo, verificação geral a Web Application Hackers Handbook . É uma excelente leitura sobre a criação de modelos de autenticação segura.

Editar : Em relação à questão em sua edição - Eu sugiro:

"pedido Uma senha de e-mail tem sido enviado para o endereço fornecido. E se um e-mail não chegar em breve, verifique a pasta de spam. Se não e-mail chega, então existe nenhuma conta com o e-mail que você forneceu ".

Há um trade-off que está sendo feita aqui entre facilidade de uso e segurança. Você tem que equilibrar isso com base no contexto - é a segurança suficiente importante para você e seus usuários para justificar este inconveniente?

Enviar e-mail com a nova senha.

forçar uma alteração de senha quando eles chegam e introduza a nova senha.

Isso garante que a pessoa que queria a senha será o único ficando apenas na conta.

Se o e-mail é inalado, alguém poderia entrar para a conta (é claro), mas a verdadeira festa vai descobrir isso imediatamente (como sua senha que você acabou de enviar-lhes que não funciona).

Também enviar confirmações de alterações de senha para os usuários.

Se alguém obter a nova senha e, em seguida, um e-mail dizendo "thanx para alterar a senha", eles vão ser bastante intrigado e vai falar com um administrador se não fazê-lo.

Usando o link de redefinição de verificação de e-mail / senha lhe dará uma melhor segurança. Se você olhar ao redor isto é como a maioria dos sites fazê-lo e as pessoas estão muito usado para esta verificação, por isso eu recomendo usar este tipo de autenticação.

Gostaria de pensar (de gbrandt) Opção 2 seria um ótimo método se for combinado com algumas informações pessoais que você já tem para o usuário. ou seja a data de nascimento.

Quando o usuário solicita uma nova senha (reset) através de entrar em seu endereço de e-mail, ele também tem que introduzir uma data de nascimento correta (ou algo mais) antes que a senha é redefinida e uma nova é enviada para o usuário.

Somente aqueles que o conhecem bem pode possivelmente irritá-lo, redefinindo sua senha! Ele não pode ser um estranho ou um bot

Após 5 ou 7 ruim e-mail e data de combinações do nascimento o usuário é enviado por email que sua senha foi solicitada para ser reposto e falhou devido a uma credencial incorreta. Em seguida, redefinir a senha para essa conta é suspenso por 24 horas ou qualquer período desejado.

(se muitos usuários de contas do webadmin em relação a este e-mail que ele vai saber que alguém está tentando atingir maliciosamente informações do seu site / app)

O que vocês acham?

Opção 1. é não uma boa idéia, como geralmente o seu torna-se fácil adivinhação por outros. e-mail pessoal de Sarah Palin (Yahoo eu acho) foi cortado desta maneira por um terceiro.

As outras opções são melhor e posts anteriores esbocei o detalhe.

A ideia que eu estava pensando era assinar os dados no link que é enviado para o usuário. Então, quando o usuário clica no link e o servidor recebe a chamada, o servidor também recebe a parte criptografada e pode validar que os dados estava intacta.

Eu tenho implementado um projeto Java para este caso de uso. É no GitHub, open source. Ele responde a sua pergunta perfeitamente ... implementado em Java.

Quanto ao link no e-mail -. Ele gera o link, mais valida-lo sobre o uso

Há explicação para tudo (e se algo está faltando - deixe-me saber ...)

Dê uma olhada: https://github.com/OhadR/Authentication-Flows

Veja a demo aqui .

Este é o web-app cliente que utiliza o auth-flui, com o README com todas as explicações. que direciona a implementação: https://github.com/OhadR/ oauth2-sample / árvore / master / autenticação flui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top