Jump to content
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? 

 

Share this post


Link to post
Share on other 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).

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.