Artigos comentados e explicados sobre MySQL
Moderador: web
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));

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
web
ADMIN
Mensagens: 12457
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para Artigos sobre MySQL
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes
|
|
|