Usar e se proteger do injection MySQL

Artigos comentados e explicados sobre MySQL

Moderador: web

responder a dúvida

Usar e se proteger do injection MySQL

Mensagem por web Online » Sáb Out 30, 2010 1:21 pm


Nesse artigo estarei mostrando um exemplo simples de como obter todos os dados de determinado banco de dados MySQL fazendo um injection, e por último, como fazer um anti-injection para proteger o banco de dados.

Vamos observar o código abaixo

<?php
$db = mysql_connect("localhost", "login", "senha") or die("Could not connect.");
if(!$db) die("no db");
if(!mysql_select_db("bd",$db)) die("No database selected.");

extract($_POST);

$selec = "SELECT * FROM cor WHERE cor='$cor'";
$exec = mysql_query($selec, $db) or die(mysql_error());
while($campos=mysql_fetch_array($exec)) {
extract($campos);
echo $cor;
}
?>

<form method="post">
<input type="text" name="cor" value="Azul">
<input type="submit">
</form>

Observe na consulta, que peço para mostrar somente as linhas da tabela cor, onde a cor for igual a que eu passar no input, no caso Azul

Agora, teste o mesmo código acima, colocando como valor do input o seguinte: ' OR 1=1 #

Isso vai fazer com que liste todos os itens da coluna cor, ignorando o script anterior, onde só retornava os itens de cor Azul

O # que tudo a seguir após ele será comentário, e será ignorado.

Dessa forma, se fosse um sistema de login, onde a consulta fosse: SELECT * FROM dados WHERE login='$login' AND senha='$senha', eu iria obter uma lista com todos os logins da tabela dados.

Há diversas formas de usar o injection para obter diversos tipos de dados.

Essa é uma forma de obter os dados de um banco de dados, agora, para proteger-se, basta eliminar-mos alguns caracteres chave do valor que foi passado.

Para proteção, usaremos essas 2 linhas, que irá pegar os termos perigosos e eliminá-los
$variavel = str_replace(" OR ", "", $variavel);
$variavel = str_replace(" 1=1 ", "", $variavel);

Outra forma simples é usar a seguinte função
$variavel = mysql_real_escape_string(trim($variavel));



detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12457
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

responder a dúvida

Voltar para Artigos sobre MySQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes