site do PHP atacado

1

Eu tenho um site baseado em PHP com um banco de dados MySQL. Alguns dias atrás eu recebi um email contendo todos os usuários do banco de dados juntamente com suas senhas decodificadas (as senhas foram codificadas usando o MD5).

Após alterar todas as senhas (ftp, banco de dados e senhas de todos os usuários), recebi um email com as novas informações dos usuários.

Eu usei mysql_real_escape_string e htmlentities para higienizar as entradas do usuário. Não sei mais o que fazer para proteger o site de outra invasão. Alguém tem alguma idéia de como isso poderia ter acontecido e o que eu posso fazer para evitar isso?

Sua ajuda é muito apreciada!

    
por miha 10.05.2011 / 08:59

2 respostas

12
  1. Pergunte ao invasor. Eles entraram em contato com você (em vez de ficar quieto e apenas vender a informação), então presumivelmente eles também querem ajudá-lo.

  2. Verifique todas suas consultas SQL, procurando por escape de entrada perdida e coisas do tipo. Fique de olho nas consultas para a tabela de usuários, especialmente se você fizer um SELECT * .

  3. Evite SELECT * o máximo que puder - basta selecionar os campos de que precisa.

  4. htmlentities não escapa corretamente os dados a serem inseridos nas consultas SQL. Você deve sempre usar mysql_real_escape_string para isso. htmlentities e htmlspecialchars são usados para limpar os dados antes de serem exibidos no navegador.

  5. Considere o uso de declarações preparadas, por exemplo, com PDO . Isso facilitará enormemente a tarefa de proteger contra injeções de SQL, já que os dados não precisam ter nenhum escape. (você ainda precisa de htmlentities antes de retornar ao navegador, mas o XSS é um tópico diferente).

por 10.05.2011 / 09:03
1

Tente alterar suas consultas SQL para Declarações preparadas .

Contacte também o seu hoster para obter alguma ajuda deles.

Verifique os patches mais recentes do seu CMS, se você estiver usando um.

Use o MD5 com um sal e várias rodadas de hash MD5.

    
por 10.05.2011 / 09:06

Tags