Jump to content


Photo

Insert Com $_get


  • Faça o login para participar
3 replies to this topic

#1 rickjames

rickjames

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre(RS)
  • Interesses:Desenvolvimento Web.

Posted 06/10/2008, 15:54


Ola pessoal.
Sou novato em PHP e MySQL. Estou fazendo um formulário de inserção seguinte :
<form method="POST">
<table width="500" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width=100">Name</td>
<td><input name="name" type="text" id="name" size="50"></td>
</tr>
<tr>
<td width="400">Comment</td>
<td><TEXTAREA NAME="comment" COLS=50 ROWS=12></TEXTAREA></td>
</tr>  
<tr>
<td width="100"> </td>
<td><input name="add" type="submit" id="add" value="Add"></td>
</tr>
</table>
</form>


A tabela no MySQL contém 4 (quatro) campos : id(auto_increment),name(varchar),comment(text) e route(int). este ultimo campo deve armazenar um valor provindo de uma variavel $_GET['r'] em outro script.
No script que processa o form e insere os dados , eu coloquei assim :
if(isset($_POST['add'])) {

   $name = $_POST['name']; 
   $comment = $_POST['comment'];
   $route = $_GET['r']; 

 $query= "INSERT INTO  geo_comments (name,comment,route) VALUES('$name','$comment','$route')"; 
 
  mysql_query($query) or die('Error, insert query failed');   
 
}

Ele está inserindo os valores nos campos "name" e "comment" corretamente mas no campo "route" apenas 0 em lugar do número da rota pedida através deste frame :
 echo '<iframe name="frame" src="http://djalmabina.100webspace.net/html/comments.php?route='.$route.'" width="600" height="600" frameborder="0"></iframe>';
acima, a variavel $route definida é igual a uma $_GET['r'] correspondente a uma rota selecionada.
Espero que tenham entendido minha dúvida de modo que peço uma opinião de onde está erro.
abraço.
Djalma Bina.


#2 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 06/10/2008, 17:58

não faça inserções em banco de dados com variáveis resgatadas diretamente de um get. Seu código fica vunerável com isso, pois algem pode fazer um SQL injection.

#3 hlegius

hlegius

    Turista

  • Usuários
  • 58 posts
  • Sexo:Masculino
  • Localidade:Guarulhos, SP
  • Interesses:Google Talk: hlegius em gmail ponto com

Posted 06/10/2008, 18:20

O amigo acima tem razão ! Com esse código aí sem fazer força nenhuma dá para injetar SQL nele e obter alguma vantagem sob essa vulnerabilidade.

Mas respondendo sua questão: antes da query rode um: var_dump($_GET['r']); Veja a saída dele. Talvez o valor esteja vindo nulo, ou ainda, você tá tentando inserir um tipo de dado errado no database e ele o recusa.


Abraço!
hlegius.
http://www.hlegius.pro.br | http://www.programe.me
ArchLinux - A simple lightweight Linux distribution

#4 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 06/10/2008, 19:54

SQL Injection pode ser feito até com o método POST.

O ideal é sempre tratar com alguma função os valores que serão envolvidos na query.
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq