você está aqui: Home  → Arquivo de Mensagens

Recomendações para armazenamento e recuperação de senhas

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 25 de agosto de 2015

Retomando o assunto discutido na dica "Envio de senhas em texto puro - Portal Plaintextoffenders", relaciono a seguir algumas recomendações para quem oferece serviços protegidos por senha. Este texto é uma tradução livre de uma resposta publicada no portal Stackexchange.

NUNCA envie senhas em conexões desprotegidas e também não as armazene em forma aberta, não criptografada. As senhas devem passar por uma função hash usando um hash lento de via única (one way), tais como bcrypt ou PBKDF2. Se um usuário esquecer sua senha, você deve oferecer a ele um link para redefinir a senha, que envia para o email registrado um link que só pode ser usado uma vez.

Recomenda-se obedecer as seguintes recomendações:

  • Um hash de todas as senhas deve ser obtido usando bcrypt ou PBKDF2. Veja porque;
  • Valide os hashes durante o login;
  • Se um usuário esquecer sua senha, envie a ele um link seguro de uso único para redefinir sua senha, usando um token gerado aleatoriamente e armazenado no banco de dados. O token deve ser único e secreto, então o token deve ser armazenado como um hash no banco de dados e comparado quando for usado;
  • Certifique-se de que um token só pode ser usado para redefinir a senha do usuário que solicitou;
  • Uma vez que o token tenha sido usado, ele deve ser apagado do banco de dados e não pode ser usado novamente;
  • Todos os tokens, inclusive os tokens para redefinição das senhas, devem expirar após um período de tempo, como por exemplo, 48 horas. Isto impede que um atacante explore tokens não usados em algum momento no futuro;
  • Imediatamente exiba um formulário para permitir que o usuário redefina sua senha. Não use senhas temporárias geradas aleatoriamente!
  • Todas estas operações devem ser feitas sobre conexões SSL.

É altamente recomendável a leitura do documento The Definitive Guide to Forms-Based Website Authentication, para obter um conjunto de diretivas sobre como construir sistemas seguros de autenticação.

Observação: O termo hash é muito usado em segurança da informação. Segundo a definição da Webopedia: um hash é um número gerado a partir de uma sequência de caracteres. O hash é substancialmente menor do que o próprio texto, e é gerado por uma fórmula de forma a tornar altamente improvável que algum outro texto irá produzir o mesmo valor. Hashes são usados em sistemas de segurança para garantir que mensagens transmitidas não foram adulteradas. O remetente gera um hash da mensagem, encripta e envia com a mensagem. O destinatário então desencripta a mensagem e o hash, produz um outro hash a partir da mensagem recebida, e compara os dois hashes. Se eles forem os mesmos, existe uma alta probabilidade de que a mensagem tenha sido transmitida intacta.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script