[FUG-BR] RES: Off Topic: Postfix + mysql + troca de senha

Augusto Bott bott em catho.com.br
Qui Fev 16 16:25:56 BRST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

A função ENCRYPT() do mysql é dependente de plataforma (ou pelo menos,
costumava ser...). Significa que ENCRYPT num linux não necessariamente
retorna a mesma coisa que num BSD.

ENCRYPT(), MD5() e SHA1() são exemplos de funções HASH (ou one-way).

Três propriedades são especialmente interessantes (entre outras):

a) para uma mesma entrada A, sempre haverá a mesma saída
(são determinísticas, com a mesma entrada, sempre a mesma saída);

b) se houver uma pequena variação na entrada (ex: 'aaadd' ou 'aAadd'), a
saída tende a ser completamende diferente;

c) a função direta é barata (de 'ida'), ou seja, do plaintext para o
encriptado é muito 'barato', rápido. Mas do encriptado para o plantext,
impraticavelmente cara (a função 'de volta'). A partir de da informação
encriptada, é praticamente impossível reaver a informação original.

Por esses motivos, são particularmente interessantes para armazenar
senhas e informações que apenas uma única pessoa deve saber - o usuário.

Agora, quanto a tua aplicação, recomendo usar PASSWORD() nativa do
MySQL, MD5, SHA1 ou outra qualquer (eu normalmente uso MD5 ou SHA1, pois
não depende de mandar a string da senha pela conexão no banco,
normalmente sem SSL). Como assim?

Duas alternativas para autenticar o usuário:

a) SELECT COUNT(1) FROM users WHERE username='someone'
AND PASSWORD=[ENCRYPT|MD5|SHA1|PASSWORD]('secret');

b) SELECT username, password FROM users WHERE username='someone';

em (a), a senha e o user trafegam em plaintext pela rede e podem
eventualmente aparecer em logs de acesso ao banco...

em (b), apenas o username trafega em plaintext, a senha faz parte do
retorno do pacote, encriptada. Nesse caso, deves calcular a senha
encriptada na aplicação e comparar com a resposta do banco (mas deverás
encriptar no banco com alguma função HASH também disponível no PHP ou
outra linguagem que fizeres a interface)


Augusto Bott
DBA - Administrador de Banco de Dados
Departamento de Redes e Tecnologia

E-mail: bott em catho.com.br
Telefone: +55 11 3177-0700 ext: 343
Celular:  +55 11 7840-3154
Jabber:   mestre em jabber.catho.com.br
MSN:      augustobott em hotmail.com
ICQ:      710029
- ----------------------------------------------
Catho Online - Seu sucesso é o nosso negócio
http://www.catho.com.br


Fabrício Fadel Kammer wrote:
> Entao Robson, o problema é comparar :-)
> 
> Não sei como descriptografar a senha...
> 
> -----Mensagem original-----
> De: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em fug.com.br] Em
> nome de Robson Uchoa
> Enviada em: quinta-feira, 16 de fevereiro de 2006 14:18
> Para: Lista de discussao sobre FreeBSD
> Assunto: Re: [FUG-BR] Off Topic: Postfix + mysql + troca de senha
> 
> 
> Por que você não tenta indexar pelo nome ou número do usuário (ou outro 
> campo que seja único) ao invés da senha?
> 
> update senha =encrypt(senhanova) from email where username =
> nomedeusuario;
> 
> É lógico que você deve verificar a senha antiga primeiro
> 
> select senha from email where username = nomedeusuario;
> 
> e comparar.
> 
> 
> Fabrício Fadel Kammer escreveu:
> 
>>Salve galera!
>> 
>>Sei q eh bem off essa questao, mas se alguem já conseguiu fazer isso e
> 
> 
>>puder me ajudar...
>> 
>>Tenho um servidor postfix e as senhas sao armazenadas no banco de 
>>dados usando a funcao encrypt() do mysql...
>> 
>>Alguém já fez uma interface em PHP para alteracao de senha que ta 
>>armazenada com encrypt()???
>> 
>>O problema ta em testar a senha antiga, pq o encrypt usa o salt e se 
>>vc fizer encrypt('teste') 10 x tera 10 valores diferente, entao nao da
> 
> 
>>pra fazer update senha =encrypt(senhanova) from email where senha = 
>>encrypt(senha_antiga); :-(
>> 
>>[]s
>>_______________________________________________
>>freebsd mailing list
>>freebsd em fug.com.br 
>>http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
>>
>>  
> 
> _______________________________________________
> freebsd mailing list
> freebsd em fug.com.br
> http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
> 
> _______________________________________________
> freebsd mailing list
> freebsd em fug.com.br
> http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
> 
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFD9MO0e+9A2H6dRtYRA7bZAJ9OMy3AIkFDOfNLjo7WHBvnOFmJ/QCff6rt
QAufuZPEabWG20JbpZ3RyVM=
=T97M
-----END PGP SIGNATURE-----
_______________________________________________
freebsd mailing list
freebsd em fug.com.br
http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br



Mais detalhes sobre a lista de discussão freebsd