colocar senha criptografada usando o md5 [resolvido]

Iniciado por botinha, 25 de Maio de 2011, 21:01

tópico anterior - próximo tópico

botinha

Caros amigos como iniciante na programação PHP tenho experimentado implementar esse artigo http://www.vivaolinux.com.br/artigo/Cadastro-e-login-em-PHP/ porém gostaria de usar o sistema de encriptação md5. Algum amigo poderia me dar uma ajuda por onde devo começar.


Valeuuuuu
"o suor poupa o sangue"

zekkerj

Olá botinha,

Qual a vantagem que você pretende ter com o uso de MD5? [OBS: Não é crítica, é pergunta mesmo. Estou avaliando o que vc já sabe do assunto pra direcionar a resposta.]

Você já sabe calcular o hash MD5 de uma determinada string?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

bitetti

Bom, respondendo a restposta do zekkerj implementar MD5 é considerad boa (ótima) prática de segurança.
É um artigo bem feito esse, bem direcionado, pena que hoje em dia as circunstâncias pedem mais doque o "be-a-bá".

Para implementar o MD5 vc deve setar seu campo de senha para CHAR(32) (sim string fixa) ou CHAR(16) se optar por um campo BINARY (não lembro se o MyISAM vai tirar vantagem do binario, é um formato veeeelho).

Quando for salvar a senha do usuario faça:
$senha = md5($_POST["senha"]); // Idem anterior
$senha2 = md5($_POST["senha2"]); // Idem anterior

Salve assim. Lógicamente quando o usuário esquecer a senha vc deve mandar uma provisória para o e-mail dele.
Isso é ótimo em varios aspectos, vc nao conhece a senha dele, e se a informação vasar ninguem vai conhecer a senha dele e ninguem vai poder culpar vc por isso.
E o MD5 gera uma string de 32 caracteres fixos, independente se o usuario usar 6 ou 600 digitos.
 

zekkerj

CitarBom, respondendo a restposta do zekkerj implementar MD5 é considerad boa (ótima) prática de segurança.
Eu preferia que o botinha tivesse respondido isso. Queria saber o quanto ele está a par das práticas de segurança, o que ele já sabe, e principalmente, onde ele espera chegar com isso.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

botinha

Respondendo a pergunta do meu caro amigo zekkerj , os meus conhecimentos sobre PHP ainda são básicos bem como o de segurança em banco de dados, como estou aprendendo eu vi alguns artigos que trata sobre segurança e verifiquei que exista o md5 para criptografa a senha, o servidor que montei em casa é para puro conhecimento ainda nada comercial ou funcional em algum local. Achei bem interessante a senha não ficar exposta no banco de dados, mas por outro lado se apenas o servidor é administrado por uma pessoa em certo ponto acho que a visualição da senha é válida. Sobre o PHP estou admirado sobre a funcionalidade que o mesmo possui e estar aprendendo usa-lo está sendo uma experienciência muito boa. Desde já agradeço a você e ao amigo bitetti, vou tentar usar a dica e se não de certo retorno.


CitarVocê já sabe calcular o hash MD5 de uma determinada string?
PS sobre hash ainda não sei nada. Mas quero aprender.

Valeuuu
"o suor poupa o sangue"

zekkerj

Beleza.

Bem, o bitetti já adiantou quase tudo sobre o uso do MD5; só faltou lembrar que na hora em que vc for verificar o login, vc tem que calcular o hash MD5 da senha do candidado a acessar, pra poder comparar com o hash armazenado.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

irtigor

O md5 não é tão seguro assim, ele não é resistente à ataques de colisão. Isso não torna seu uso "totalmente não recomendável" mas, se não existir nada que impeça o uso de um outro algorítimo... por exemplo, no Debian - a partir do  Squeeze -  o sha512 é o padrão para as senhas armazenadas no shadow.

botinha

Gostaria de agradecer aos amigos bitetti e zekkerj pela ajuda prestada. A solução foi com sucesso vou colocar resolvido aqui no post e pedir para o moderador não trancar o tópico pois fiquei interessado na lebre que o irtigor levantou sobre a vunerabilidade do md5 sendo mais seguro o sha512 se possível o amigo poderia dizer como implementa-lo.

Valeuuuu
"o suor poupa o sangue"

bitetti

http://blog.ricky-stevens.com/php-sha512-password-hashing/

para versoes mais baixas q a 5.3.2 vc pode usar um comando externo
http://stackoverflow.com/questions/1966154/sha-512-library-for-php
(claro, dar autorização de execução ao php já nao é tao seguro)

ou implementar o negocio na mão caso nao queira namorar, dormir ou outras coisas.

De qualquer forma, quando a questão é segurança as pessoas costumam cometer exageros.
Fazer implementações exageradas as vezes consome muito tempo desnecessário.
É como construir um bunker de concreto para evitar que pulem ladrões em sua casa, quando um cachorro grande já resolve.
 

Paulo Correa

Citação de: botinha online 31 de Maio de 2011, 21:08
Gostaria de agradecer aos amigos bitetti e zekkerj pela ajuda prestada. A solução foi com sucesso vou colocar resolvido aqui no post e pedir para o moderador não trancar o tópico pois fiquei interessado na lebre que o irtigor levantou sobre a vunerabilidade do md5 sendo mais seguro o sha512 se possível o amigo poderia dizer como implementa-lo.

Valeuuuu
O resolvido do seu tópico ficará melhor como o tota ensina aqui: http://www.youtube.com/watch?v=cW8isbYhR_M

Valeu e até mais.