A PlazaHost dispõe de soluções otimizadas e confiáveis, com estabilidade e uptime elevados, utilizando o que existe de mais novo no mercado tecnológico. Assim podemos atender aos mais diversos tipos de usuários, com a maior diversidade de necessidades e exigências possíveis.

Posts com a Tag ‘SQL’

Evite ataques de SQL Injection no PHP e MySQL

domingo, 8 de maio de 2011

Fonte: www.maisumblog.com

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.

 

Mapa do site | Trabalhe Conosco | Blog

Todo o conteúdo deste site é de uso exclusivo da PlazaHost - Copyright © 2001-2011