ricardo cardoso
(usa Debian)
Enviado em 20/04/2010 - 18:56h
Olá pessoal!
Bem, estou colocando esse post aqui para trocar informações sobre segurança. Então vamos lá.
Estava eu ontem a noite, aqui em casa, sem nada pra fazer e resolvi fazer uns testes de segurança em Desenvolvimento para Web. Fiz o seguinte criei uma pequena tabela em uma banco de dados mysql em um servidor aqui em casa. Essa tabela tem apenas dois campos, usuario e senha.
Fiz um pequeno formulario em HTML para o Usuário fazer seu cadastro e outro em php para efetuar login. Obviamente criei dois arquivos em PHP, um para poder fazer o cadastramento e outro para fazer a autenticação.
No formulario que envia os dados para o servidor, eu coloquei a função para criptografar a senha em MD5 e por isso tive que colocar a mesma função no formulario de autenticação para que ele possa criptografar a senha informada pelo usuário e comparar com a que está salva no BD.
Até aí tudo bem.
Mas comocei a pensar. Digamos que alguem tente logar no sistema, ou seja, adivinhar a senha do usuário vai ter trabalho já que ela esta criptografada e mesmo que o suposto invasor tente descobrir vai dar trabalho...
Porém tem os detalhes que me deixam com um pé atrás.
1. Se por acaso alguem supor que a senha do usuario é um nome de mulher, ele vai digitando vários até encontrar o correto, aí o sistema vai criptografar para verificar e vai conseguir logar e por aí vai.
2. Se alguem tiver acesso ao servidor ou então invadir o mesmo localmente ou pela internet, vai ter acesso ao banco de dados. um exemplo claro são os hosts na Net que hospedam sites. Quando a gente loga ou acessa o diretorio do nosso domínio o famoso PhpMyAdmin está lá, com livre acesso e aí o cara nem precisa ter trabalho porque já vai ter todas as informações dos usuários na mão.
3. Agora vem o mais chato, o cara tá lá dentro do servidor, dentro do banco de dados o que ele faz? vai até o campo senha e pega a senha criptografada. Ex. digamos que o numero 1 é a senha, criptografado seria 13fa1975cbfaa4444446acdef87966, basta pegar esses 32 caracteres e somente digita-los no formulario de login no local para a senha e ele vai logar no sistema. simples!
4. O Hacker que sacanear e copia todas as senhas e usuários do banco de dados e espalha pela internet. Já dá para saber o que acontece né? a criptografia nesse caso não vale de nada.
Então cadê a forma eficiente e sem furos de usar a criptografia sem ser específico em MD5, ou seja, em todos os métodos?