domingo, 8 de julho de 2012

SQL Injection no PHP


Recentemente tive um site invadido onde o próprio invasor me enviou um e-mail mostrando alguns dados do meu banco e dizendo que poderia corrigir o problema mediante pagamento.
Fiz uma analise procurando saber como o site foi invadido. Depois de muito analizar, chego a conclusão que foi por SQL Injection.
Segue abaixo uma alternativa que evita esse tipo de ataque:
Primeiro crie um arquivo php com o seguinte conteúdo:
funcoes.inc.php
function anti_injection_post($array) {
 foreach ($array as $key=>$value) {
  $array[$key] = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|truncate|#|*|--|\\)/"),"",$array[$key]);
  $array[$key] = trim($array[$key]);
  $array[$key] = strip_tags($array[$key]);
  $array[$key] = addslashes($array[$key]);
   }
 return $array;
}

Posteriormente nos arquivos do site onde você irá usar os arrays $_POST e $_GET use o seguinte no inicio do arquivo:
  
include_once('funcoes.inc.php');  
$_POST = anti_injection_post($_POST);  
$_GET  = anti_injection_post($_GET);  
. . .  

Essa função evita que seja inserido instruções sql em campos ou na barra de endereço do seu site.
é isso ai…

Nenhum comentário:

Postar um comentário