Recentemente, mudamos para uma melhor estratégia de armazenamento de senhas, com todas as coisas boas:
- As senhas são armazenadas depois de passar pelo bCrypt
- O usuário recebe um link de ativação na criação da conta para confirmar a propriedade do endereço
- Esqueceu a senha sem pergunta de segurança, um link é enviado para o e-mail deles.
- O link expira após 24 horas, quando é necessário solicitar um novo.
- Se a conta for criada por nossa equipe, um email será enviado com uma senha forte e aleatória. Após o login, o usuário deve redefini-lo para algo que não sabemos e que é bCrypt'd.
Agora, isso está de acordo com as "práticas recomendadas", mas isso aumentou nossa quantidade de solicitações de suporte de usuários comuns que não entendem tudo isso, eles só querem fazer login.
Frequentemente, recebemos solicitações de usuários que reclamam de:
- Senha incorreta (daquela que eles precisam redefinir, geralmente a colam com um espaço no final). Eles nos dizem o que estão usando, mas não temos como dizer qual é a senha real.
- Dizendo que eles não estão recebendo o e-mail, nós os enviamos (ativação, redefinição etc.). Em geral, esse não é o caso, após muita solução de problemas, geralmente descobrimos que eles digitaram um erro de digitação no email, que não estavam verificando a conta de email correta ou que ela simplesmente estava na pasta de spam.
É claro que não podemos tentar por eles, pois não temos a senha. Estamos registrando as tentativas com falha, mas também limpamos a senha que eles usaram, pois provavelmente é a senha usada para outra conta e não queremos armazenar em um arquivo de log de texto sem formatação. Isso nos deixa com praticamente nada para ajudá-los quando relatam problemas.
Estou curioso para saber como a maioria das pessoas lida com questões como essas?
fonte
Respostas:
Pode ser corrigido incluindo um link com um GUID único que os efetua login e os obriga a redefinir a senha. Não force o usuário a copiar e colar. (Além disso, por que não retirar o espaço em branco no final da senha no seu formulário.)
Verifique se o email de saída é enviado com spam (talvez configure contas de teste em alguns serviços de email comuns), registre tudo o que acontece e talvez relate isso ao usuário se ele tentar solicitar uma nova redefinição (por exemplo, email para johndoee @ gmail .com falhou, usuário não encontrado, você o escreveu corretamente?). Além disso, seja claro para os usuários sobre problemas de ortografia e spam.
Além disso, o OpenID e outras autenticação de terceiros também são uma opção, como outros já disseram.
fonte
Eu diria que use um método de autenticação de terceiros, como Facebook, OpenID, Google ... o que for apropriado para seus usuários. No entanto, se seus usuários não conseguirem lembrar sua senha, talvez não possam usar um sistema de autenticação de terceiros ...
Dependendo da sua situação, você poderá usar outro sistema, como certificados de cliente SSL (eles são definitivamente difíceis de instalar para usuários finais, mas se essa é uma empresa e você pode automatizar sua instalação, é ótimo), SSO do Windows, um aplicativo para celular etc.
fonte
Você precisa mesmo fazer isso? A primeira coisa que você precisa fazer é determinar o que está protegendo e de quem está protegendo. Talvez não valha a pena o custo das melhores práticas, e talvez a melhor prática nem pare seu invasor.
Se você é contra a NSA e tem algo que eles querem, desista e facilite a vida de seus usuários. Se você tiver números de cartão de crédito, terá que aturar os problemas que o nível de segurança exigido exige, porque existem bandidos por aí que os querem e gastam dinheiro e tempo para obtê-los. É o acesso a um álbum de fotos da família, você precisa de toda essa segurança?
Leia as obras de Buce Scheiners (Segredos e mentiras) como um bom começo para entender a segurança.
fonte
A primeira coisa que salta é que seus e-mails estão entrando em lixo eletrônico. Configurar email para que seja reconhecido como real não é trivial. Sugiro que você analise como impedir que seu email seja sinalizado incorretamente (questão separada no SO?)
A segunda coisa que eu recomendaria é fornecer aos usuários um site / aplicativo com um clique que inicie a senha para recuperar e-mails. Recuse-se a fazê-lo de outra maneira que não seja o e-mail, é inseguro e cria um mau precedente.
fonte
O fato de eles estarem dispostos a ligar e informar sua senha em voz alta indica que, para esses usuários, a senha e as informações que ela protege não são tão importantes assim. Eu nunca faria nada disso com minha senha bancária. Mas existem vários sites que exigem senhas para coisas que realmente não as merecem. Eu tenho uma senha padrão que uso para todas essas e, quanto mais "ei que não é uma senha forte" ou "faremos de você uma senha e forçá-lo a alterá-la regularmente" e assim por diante, menos eu quero usar esse serviço. Eu teria uma breve conversa com as pessoas de "valor comercial" em sua vida para ver se, de fato, apenas mantê-las em texto sem formatação no banco de dados e enviá-las por e-mail para as pessoas a pedido seria uma abordagem melhor.
Se, de fato, isso é seguro, tente o que um de meus clientes fez com o sistema que codificamos para eles. Enquanto estiver ao telefone com a pessoa, entre no banco de dados e altere o endereço de e-mail para o seu. Em seguida, acesse a web e clique em Esqueci a senha. Aguarde o e-mail e use-o para efetuar login. Usando o site, altere a senha para Senha ou outra coisa que você concorde verbalmente com o cliente. Altere o endereço de e-mail para o próprio endereço e diga "tudo pronto, sua nova senha está ativa agora!" Cliente feliz e você não precisa explicar a eles o que está acontecendo.
fonte
o método de último recurso que eu usei em um sistema com usuários muito analfabetos no passado era direcionar o usuário para uma tela na qual recebessem um número de telefone e um número de confirmação. Eles ligaram para o número de telefone, verificaram sua identidade por meios manuais e depois leram a confirmação. a pessoa do suporte efetuou login em um sistema separado, digitou o número e obteve um segundo número para devolver ao cliente. o cliente usou o segundo código para continuar na página de redefinição de senha. a versão do cliente da página não pôde ser executada nas sub-redes da equipe de suporte e a tela de suporte não pôde ser executada nos clientes.
não é à prova de balas, pois uma pessoa de suporte pode usar uma VPN para executar as duas extremidades de um local, mas foi suficiente para auditoria, pois a conta de suporte foi registrada como responsável pela atividade
fonte
Talvez implementando regras de segurança que não são INSANAS. Ao fazer isso, tudo o que você obtém é menos segurança, porque o sistema é tão difícil de usar que seus clientes revalorizam senhas para você e seus amigos apenas para fazê-lo funcionar!
Você não pode simplesmente enviar a eles links NORMAL, depois a senha abaixo. Se o link for quebrado pelo cliente de email, basta exibir o formulário com um campo "código de ativação" ... "digite o código de ativação que você possui no email" ... 5 dígitos para que eles não confundam 0 com O etc. 4 os dígitos são aceitáveis para cartões de crédito e você precisa de uma política tão complicada para um login simples? Se o código não funcionar, repita a verificação com a string TRIMmed? Eu acho que não vai torná-lo menos seguro, certo? :)
Para mim, isso também acontece com frequência ... clico duas vezes na senha e o espaço final é copiado. É inacreditável para mim por que a peple não consegue descobrir apenas para remover os caracteres brancos finais quando a verificação falhou e repetir o processo? Então, talvez, alterne entre letras maiúsculas e minúsculas para eu verificar se não pressionei CL acidentalmente.
Você o complicou demais. Não é "redefinir senha" e "senha inicial" ... mas "Código de confirmação" e "Digite o número de confirmação que enviamos para o email", "Não tem email? Foi enviado para [email protected], verifique seu spam novamente, ainda não o possui? Reenviar seu e-mail de confirmação ". No corpo HTML, um link. http://xxx.com/conf-12345-mymail-gmail-com.html . Nenhum cliente de email quebrará isso.
fonte