Hash de senha e suporte ao seu usuário


10

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?


2
Além de ser um pouco mais descritivo nos e-mails que seu sistema envia aos usuários, não vejo o que você poderia fazer de maneira diferente, mantendo as práticas recomendadas. Faz com que você deseje poder dar um tapa nos usuários estúpidos.
24412 Bernard

11
As pessoas são estúpidas, seus usuários, mais do que a maioria dos outros, não vejo a pergunta aqui?

8
Jarrod, você está apenas insultando seus usuários. O idiota aqui é você. Você não consegue entender o nível de conhecimento sobre computadores de seus usuários. Sem ofensas, mas você está escrevendo software para pessoas que não gostam de computadores. Se você não vê nenhuma dúvida, provavelmente significa que todos os especialistas em usabilidade devem ser demitidos, porque na verdade não são necessários. É apenas um problema com "pessoas estúpidas", então nós - desenvolvedores inteligentes apenas os banimos da Web e o problema desaparece :) Se alguém escreveu um sistema que somente o autor pode usar, você não vê um problema?
Slawek

2
@ Slawwe: não, realmente, as pessoas são estúpidas.
22712 Bryan Boettcher

@JarrodRoberson, dificilmente são apenas seus usuários - quando se lida com aplicativos da Web voltados para o público, geralmente é o que você recebe. Dito isto, goste ou não , ainda consome recursos de suporte e é uma pergunta muito válida.
GrandmasterB

Respostas:


7

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.

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.)

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.

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.


algumas pessoas colocam espaços em suas senhas?
Soandos

Algumas pessoas copiam e colam senhas geradas automaticamente e incluem espaços no início e / ou final acidentalmente. (Leia a pergunta.)
Macke

3

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.


Certificados de cliente são uma ideia terrível. Eles são inseguros e um pesadelo para corrigir remotamente se algo der errado. OpenID é uma boa idéia embora
Tom Squires

Como os certificados são inseguros?
24412 Bernard

@bernard qualquer pessoa que esteja nesse PC possui o certificado. Também é bastante fácil de obter. Um com vírus
Tom Squires

11
Concordo que eles são tão seguros quanto a máquina em que residem, mas isso é um problema completamente diferente.
Bernard

3

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.


3

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.


Não que o email seja uma maneira particularmente segura de transmitir informações confidenciais. Se apenas usuários regulares poderia ser incomodado com GPG e chaves SSH ...
tdammers

@ Tdammers eu concordo que não é tão seguro. No entanto, tornou-se a pedra angular da sua identidade online (para melhor ou para pior). Atualmente, não existe uma alternativa melhor viável.
precisa

Sim existe. Email criptografado. Eu o uso o tempo todo e me incomoda que mesmo grandes empresas não se incomodem em oferecer criptografia pubkey para emails confidenciais. Nem é difícil de implementar. Acho estranho que existam leis (pelo menos aqui na Holanda) que tornam o SSL obrigatório para informações confidenciais, mas, ao mesmo tempo, o envio das mesmas informações por SMTP comum é considerado aceitável.
26612 tdammers #

@ Tdammers Eu não sei o suficiente para recomendar a mim mesmo. Sua insolentemente OP olhando para embora
Tom Squires

2

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.


2
A modificação direta do banco de dados é uma violação de segurança em si. Isso significa que você pode se passar por qualquer usuário usando seu sistema.
24412 Bernard

3
Meus clientes tinham um aplicativo do Windows com o qual podiam editar qualquer campo para qualquer usuário, digamos, se recebessem um fax dizendo que agora tinham um novo número de telefone. Claro que foi auditado. É claro que quando vi esse procedimento escrito colado na parede perto da mesa de apoio, não fiquei feliz. Mas cheguei a aceitá-lo, e há uma trilha de auditoria mostrando o que aconteceu se alguém ligar e reclamar que sua senha foi redefinida sem o consentimento deles. O problema é que nem tudo precisa ser tão seguro. E os usuários estão dizendo que isso não precisa ser.
22712 Kate

11
Infelizmente, a maioria dos usuários não conhece nada melhor. Cabe aos desenvolvedores de aplicativos de software impor as melhores práticas.
Bernard

4
Concordo que este é um grande buraco de segurança. E eu concordo que pode ser a solução mais apropriada. No entanto, parece incrivelmente tolo que o suporte ao cliente precise alterar temporariamente o endereço de e-mail do cliente para redefinir a senha do usuário: se você deseja permitir que o suporte ao cliente redefina as senhas, deixe-o fazer diretamente.
John Bartholomew

4
Eu também observaria que revelar senhas em texto sem formatação definidas pelos usuários (na verdade, armazenar senhas em texto sem formatação) é, na minha opinião, muito pior do que dar ao suporte ao cliente a capacidade de alterar diretamente as senhas do usuário.
John Bartholomew

2

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


-5

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 xxx@yyy.com, 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.


5
A política de segurança que ele mencionou não é apenas "INSANE", mas deve ser um requisito para todos os aplicativos "SANE". Links como este enviados por e-mail precisam expirar após algum tempo para impedir que a senha seja redefinida (roubando diretamente o link ou tropeçando nele por meio do algoritmo auxiliado por computador). As senhas provavelmente devem ser cortadas antes de serem validadas. Usuários são estúpidos. É lei. A resposta não é reduzir nossas medidas de segurança, mas tomar medidas proativas para ajudar a garantir que nossos usuários entendam os procedimentos adequados.
Dalin Seivewright

7
-1. Essa é uma maneira sensata de fazer isso, usada pela maioria dos sites. Se eu emitir uma "senha esquecida" em um site e receber um email com a minha senha em texto sem formatação, eu fecho a minha conta.
Matt Grande
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.