Jump to content
Nuno_Martins

Dúvida em MD5

Recommended Posts

Nuno_Martins

Olá pessoal,

Estou a desenvolver um site em PHP para uma cadeira e tenho um sistema de logins. Basicamente um utilizador preenche um formulário e se todos os dados estiverem correctos é-lhe enviado um email de confirmação com os dados. Depois disso os dados são guardados numa base de dados (ainda não está feito).

Estou a pensar encriptar a password usando o MD5, mas tenho uma dúvida. Ao encriptar a password, depois como posso enviar a password por email ao utilizador? Tinha pensado em guardar o valor original da password numa variável e enviava essa por email, mas e depois mais tarde quando está já está na BD (o seu hash) como é que posso envia-la para o utilizador?

Vejo muitas vezes sites que permitem isto de envio das passwords para os utilizadores... como posso atingir uma solução destas? Ou simplesmente esses sites não usam encriptação?

Share this post


Link to post
Share on other sites
fabiomiguel3

Boas.

Com o md5 é impossível/muito dificil retomar a string original. Pode ser usado o bruteforce/rainbow tables mas se a password for forte é quase impossível. Portanto ao registar pões a password numa variável e envias.  Caso o utilizador perca a password pedes o email e envias lhe um link para reset da password.

Share this post


Link to post
Share on other sites
amando96

Encripta em MD5 mais que uma vez se quiseres mais segurança, para enviares a password podes enviar um email logo após o registro do usuário, assim podes guardar a password "legível" numa session que será apagada depois do email enviado.


FACEPALMMOVLW PALMMOVWF FACE

Share this post


Link to post
Share on other sites
brunoais

Vejo muitas vezes sites que permitem isto de envio das passwords para os utilizadores... como posso atingir uma solução destas? Ou simplesmente esses sites não usam encriptação?

Bingo! (acertaste em cheio).

A melhor opção é nunca enviar a password para o utilizador quando ele a pede. Em vez disso, quando ele pedir para recuperar, crias uma "novinha em folha" e depois gravas na DB e envias para o utilizador.

assim podes guardar a password "legível" numa session que será apagada depois do email enviado.

Nem se faz isso! O servidor nunca envia para o utilizador a password dele!!!

Se queres ainda mais segurança uma um "Salt" (uma string (de caracteres) que se usa para adicionar no início ou no fim da string (password) antes de gravar na base de dados).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
fabiomiguel3

Encripta em MD5 mais que uma vez se quiseres mais segurança, para enviares a password podes enviar um email logo após o registro do usuário, assim podes guardar a password "legível" numa session que será apagada depois do email enviado.

2 vezes ? acho desnecessario

Share this post


Link to post
Share on other sites
Nuno_Martins

Obrigado a todos pela ajuda.

Acho que vou seguir mesmo a ideia de não enviar a password por email. Quando for preciso alterar apago a antiga da BD e coloco a nova.

Share this post


Link to post
Share on other sites
IvanGS

2 vezes ? acho desnecessario

duas vezes em MD5 não acho necessário

se for para atingir um bom nivel de segurança utiliza SH1 ou em BASE64...

Share this post


Link to post
Share on other sites
brunoais

BASE64 é assim tão seguro?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mjamado

BASE64 é assim tão seguro?

Base64 não é nada seguro - logo para começar, não é uma hash, logo, é reversível, ao contrário da MD5 e da SHA1.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
Nuno_Martins

Sem perceber muito do assunto e até sem ter pesquisado sobre o mesmo, não seria mais seguro aplicar um MD5 e por cima um SHA1? Ou o inverso?

Share this post


Link to post
Share on other sites
Nuno_Martins

Isso é mesmo à português, ir metendo pregos até a coisa parecer segura.

O que faço é usar MD5 com um salt próprio para cada projecto.

Aqui ninguém está a pregar coisa alguma. Apenas coloquei uma questão, sem perceber da matéria com o objectivo de alguém poder ajudar e não obter esse género de respostas.

Em relação à questão de usar um salt próprio vou pesquisar o que isso é e perceber o que possa ser melhor.

Share this post


Link to post
Share on other sites
mjamado
Em relação à questão de usar um salt próprio vou pesquisar o que isso é e perceber o que possa ser melhor.

Um salt é o nosso ubíquo grão de sal...  ;) É um condimento que dás para dar outro sabor à coisa.

Fora de brincadeiras, é mesmo. Pegas na password em texto, jogas-lhe com uma hash para cima (MD5 ou SHA1), concatenas a salt de três ou quatro caracteres no início, no fim ou pelo meio, e dás-lhe outra hash em cima. There, seguríssimo.

Finalmente, guardas a hash e o salt usado junto com os dados do utilizador. Para confirmar uma password inserida pelo utilizador de regresso, voltas a fazer o mesmo processo, usando a salt guardada, e comparas a hash resultante com a hash guardada.

Repara que, apesar de estar à prova de rainbow tables, ainda é vulnerável a ataques brute force - mas isso todos os esquemas de segurança são (esse brute force pode é demorar anos com o poder de computação actual, mas isso é outra conversa).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.