Ir para conteúdo
clovis.sardinha

Criptografar senhas em bd antigo

Recommended Posts

Estou criando um novo sistema de cadastro e login e já tenho um bd com tabela de usuários com inúmeros registros. 

A questão é: como faço com os usuários antigos, já que os novos irão ser criados com a senha criptografada?

Pensei em colocar um if para determinar o tamanho da senha e caso seja maior que um valor descodifico com o hash e se menor mantenho o sistema anterior.

Achei meio gambiarra.  Alguém sabe um jeito melhor de fazer? 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

Você não deveria poder reverter o hash da senha. Se você puder, isso significa que os dados não estão seguros o suficiente.

 

1 - Faça o backup de tudo para não perder dados (e de preferência criptografe o arquivo de backup com GPG ou similar).

2 - Substitua a senha de todos os usuários no banco pelo hash baseado no algoritmo que você vá usar. Sugiro bcrypt (não use md5, sha128, sha512 e variantes deles): https://www.php.net/manual/pt_BR/function.password-hash.php

3 - Passe a utilizar o algoritmo para gerar o hash no cadastro e o algoritmo de comparação na hora de fazer o login: https://www.php.net/manual/pt_BR/function.password-verify.php

4 - Como passo adicional de segurança, seria interessante invalidar as senhas dos usuários antigos e enviar um e-mail para redefinir a senha e impedindo o cadastro da mesma senha utilizada anteriormente. Opcional, mas interessante.

 

Você literalmente só precisa das duas funções que citei acima e todos os usuários passarão a ter a senha armazenada de forma segura no seu sistema (isso ainda não significa que todo o sistema está seguro, estamos falando apenas de uma minúscula fração das preocupações).

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, Matheus Tavares disse:

Olá.

Você não deveria poder reverter o hash da senha. Se você puder, isso significa que os dados não estão seguros o suficiente.

 

1 - Faça o backup de tudo para não perder dados (e de preferência criptografe o arquivo de backup com GPG ou similar).

2 - Substitua a senha de todos os usuários no banco pelo hash baseado no algoritmo que você vá usar. Sugiro bcrypt (não use md5, sha128, sha512 e variantes deles): https://www.php.net/manual/pt_BR/function.password-hash.php

3 - Passe a utilizar o algoritmo para gerar o hash no cadastro e o algoritmo de comparação na hora de fazer o login: https://www.php.net/manual/pt_BR/function.password-verify.php

4 - Como passo adicional de segurança, seria interessante invalidar as senhas dos usuários antigos e enviar um e-mail para redefinir a senha e impedindo o cadastro da mesma senha utilizada anteriormente. Opcional, mas interessante.

 

Você literalmente só precisa das duas funções que citei acima e todos os usuários passarão a ter a senha armazenada de forma segura no seu sistema (isso ainda não significa que todo o sistema está seguro, estamos falando apenas de uma minúscula fração das preocupações).

Obrigado Matheus. Vou tentar implementar desta forma. Ajudou bastante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se as senhas dos usuários ainda não tiverem uma criptografia, uma opção é criar um sistema que irá buscar todas senhas e fazer um update nas mesmas já com a criptografia usando:

19 horas atrás, Matheus Tavares disse:

2 - Substitua a senha de todos os usuários no banco pelo hash baseado no algoritmo que você vá usar. Sugiro bcrypt (não use md5, sha128, sha512 e variantes deles): https://www.php.net/manual/pt_BR/function.password-hash.php

Dessa forma nem mesmos os usuários saberão que algo foi feito a respeito, mantendo suas senhas conforme as utilizam a todo momento.

Porém se forem um gama massiva de usuários registrados faça esse processo de forma gradual deixando o website em off por um tempo até terminar todo processo.

 

Lógico que tanto o cadastro como o login devem ser modificados para nova realidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.