Sql injection
A Injeção ocorre quando ao ser encontrado um sistema com código inseguro, o atacante insere uma série de instruções SQL dentro de uma consulta (query), por meio da manipulação das entradas de dados de um sistema conectado a internet, conseguindo acesso não autorizado ao ambiente e suas informações, fazendo assim varias alterações na estrutura, como exclusão de colunas, mudança de senhas, alteração de notícias e até mesmo tirar o site de ar.
Exemplos de Ataque em PHP
A melhor função para proteger seus 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. Porém esta função não funciona em todas as versões do PHP, então na função que iremos criar temos quer verificar se ela existe, e caso não exista vamos utilizar a função mysql_escape_string().
Também devemos 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, estragando o texto. Para contornar isso basta usar a função stripslashes() para remover essas barras invertidas.
Então vamos montar a nossa função com o nome de anti_sql_injection():
function anti_sql_injection($str) {
if (!is_numeric($str)) {
$str = get_magic_quotes_gpc() ? stripslashes($str) : $str;
$str = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($str) : mysql_escape_string($str);
}
return $str;
}
Note que em nossa