henrique Postado Abril 23, 2011 Compartilhar Postado Abril 23, 2011 Bom pessoal, navegando na WEB achei esse artigo muito interessante de como evitar ataques aos nossos sistemas PHP que rodam com o MySQL. Boa leitura !!!! Em geral, o termo SQL Injection é bastante conhecido. No entanto, fazer uma função para projetos em PHP e MySQL, que evite de forma eficaz os problemas de segurança e não seja destrutiva, não é um assunto de conhecimento de todos. Alguns programadores usam a função str_replace() para remover palavras como SELECT, DELETE, UPDATE, TRUNCATE, entre outras. No entanto, se um usuário do site, por exemplo, for falar sobre programação ou usar um desses termos em inglês ele simplesmente vai sumir do seu texto. Outra função adotada é htmlspecialchars() e htmlentities(), que aumentam o volume dos dados no banco de dados e deixam elas como HTML sendo que em outras aplicações pode ser totalmente desnecessário e não compatível o uso desses caracteres. Também é conhecida a função addslashes(), que adiciona barras invertidas antes de aspas simples e duplas. Esta função é funcional, porém meio ultapassada e prejudica a visualização dos textos. É possível remover as barras nos dados vindos do banco com o auxílio da funcão stripslashes(), desta forma o trabalho será dobrado, pois os dados serão tratados na entrada e saída do banco sem necessidade. Sendo assim, seguem sugestões que realmente previne sistemas contra ataques de SQL Injection sem comprometer textos ou aumentar o volume no banco de dados. A melhor função para proteger sistemas em PHP e MySQL contra SQL Injection é a mysql_real_escape_string(), ela escapa os caracteres especiais como aspas simples e duplas antes de enviar para o banco de dados. Também é preciso ter em mente que se a diretiva get_magic_quotes_gpc() estiver ON ele irá acrescentar barras invertidas automaticamente antes de aspas simples e duplas, o problema é que ele irá enviar para o banco de dados com as barras invertidas, comprometendo o texto. Para contornar isso basta usar a função stripslashes() para remover essas barras invertidas. Segue exemplo da função com o nome de anti_sql_injection(): Note que na função primeiro é verificado se a o valor informado não é numérico, ou seja, que precisa ser tratado, em seguida, se a diretiva get_magic_quotes_gpc() está ativada, se estiver usa-se a função stripslashes() conforme falado anteriormente. Logo verifique se existe a função mysql_real_escape_string(), se existir use-a, caso contrário usamos a função mysql_escape_string(). Veja um exemplo de como usar a função: Pronto! Agora sua aplicação está protegida contra ataques de SQL Injection, e o melhor de tudo, sem destruir o conteúdo do sistema. FONTE: KingHost - http://blog.kinghost.com.br/2011/04/evite-ataques-de-sql-injection-no-php-e-mysql/ Link para o comentário Compartilhar em outros sites More sharing options...
rodrigoweb Postado Abril 24, 2011 Compartilhar Postado Abril 24, 2011 mais tem tanta formas mais facil de impedir,mais a kinghost postou bem explicativo Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Abril 24, 2011 Compartilhar Postado Abril 24, 2011 mais tem tanta formas mais facil de impedir,mais a kinghost postou bem explicativo (essa frase tem mais erros que muitos livros de 500 páginas, kkk) Tem forma mais fácil de chegar aos 30 posts ? UHahha. Mas, sobre o tutorial: aqui tinhamos um ex-cliente meio que "bravo", ele passou a noite inteira tentando usar SQL Injection no nosso painel, hauheuiahea.. mas ele não sabia que o painel foi testado pelo desenvolvedor, o developer testa todas as páginas e talz.. Mas, essa magic_quotes é um problema.. pois quem utiliza uma forma de edição pelo próprio site, pode ter problemas, ele estraga todo o arquivo, colocando "\\".. tivemos que migrar para um VPS justo por causa disto, pois o painel tem um WEBFTP :(. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados