elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  como evitar la inyeccion sql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como evitar la inyeccion sql  (Leído 10,589 veces)
CICOLO_111234

Desconectado Desconectado

Mensajes: 200

CICOLO_111234


Ver Perfil WWW
como evitar la inyeccion sql
« en: 19 Abril 2009, 16:16 pm »

hola!

tengo este codigo:
Código:
if (isset($_GET['ID'])) {
  $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
}
mysql_select_db($database_prueba, $prueba);
$query_Recordset1 = sprintf("SELECT * FROM noticias WHERE ID = %s", $colname_Recordset1);

y me gustaria como evitar la inyeccion sql.

salu2
En línea

braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: como evitar la inyeccion sql
« Respuesta #1 en: 19 Abril 2009, 18:52 pm »

Mira esta página:
http://informatica-practica.net/solocodigo/index.php/2007/09/06/evitar-inyeccion-sql-ii/
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: como evitar la inyeccion sql
« Respuesta #2 en: 20 Abril 2009, 01:02 am »

hola!

tengo este codigo:
Código:
if (isset($_GET['ID'])) {
  $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
}
mysql_select_db($database_prueba, $prueba);
$query_Recordset1 = sprintf("SELECT * FROM noticias WHERE ID = %s", $colname_Recordset1);

y me gustaria como evitar la inyeccion sql.

salu2

Eso tiene sql inyección ya que el addslashes solo agrega slashses a carácteres que puedan influir en la query, en este caso reemplazaría las comillas dobles y simples pero en el ejemplo que tu pusiste no se necesita una comilla para lanzar la sql inyección.


Código
  1. $_GET['ID'] = '-1 union select 1,concat(shell_en_dword),3 into outfile test.php --';
  2.  
  3. if (isset($_GET['ID'])) {
  4.  $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
  5. }
  6. mysql_select_db($database_prueba, $prueba);
  7. $query_Recordset1 = sprintf("SELECT * FROM noticias WHERE ID = %s", $colname_Recordset1);

Para poder evitar esto necesitas encerrar el valor entre comillas y de todas formas tendrías problemas con los slashses asi que simplemente puedes utilizar mysql_real_escape_string:
Código
  1. if(isset($_GET['ID'])) $colname_Recordset1 = $_GET['ID']; else die('No hay valor');
  2.  
  3. mysql_select_db($database_prueba, $prueba);
  4. $query_Recordset1 = sprintf("SELECT * FROM noticias WHERE ID = '%s'", mysql_real_escape_string($colname_Recordset1));

O también:
Código
  1. if(isset($_GET['ID'])) $colname_Recordset1 = $_GET['ID']; else die('No hay valor');
  2.  
  3. mysql_select_db($database_prueba, $prueba);
  4. $query_Recordset1 = 'SELECT * FROM noticias WHERE ID = \''.mysql_real_escape_string($colname_Recordset1.'\'';

Ahra si ID es un valor numérico puedes hacer:
Código
  1. if(isset($_GET['ID'])) $colname_Recordset1 = $_GET['ID']; else die('No hay valor');
  2.  
  3. mysql_select_db($database_prueba, $prueba);
  4. $query_Recordset1 = 'SELECT * FROM noticias WHERE ID = '.(int)$colname_Recordset1;

O también:

Código
  1. if(isset($_GET['ID'])) $colname_Recordset1 = $_GET['ID']; else die('No hay valor');
  2.  
  3. mysql_select_db($database_prueba, $prueba);
  4. $query_Recordset1 = 'SELECT * FROM noticias WHERE ID = '.(int)preg_replace('|[^0-9.]|i', '', $colname_Recordset1);
De esta forma tomará carácteres válidos y no devolverá error si realmente hay un valor numérico.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
inyeccion SQL y como evitarla.... « 1 2 »
PHP
nobo 13 6,514 Último mensaje 22 Febrero 2012, 14:42 pm
por #!drvy
Como evitar Surveys?
Dudas Generales
kity54 0 10,511 Último mensaje 12 Junio 2012, 23:58 pm
por kity54
Como evitar una inyección sql?
Nivel Web
andvilla07 1 2,112 Último mensaje 26 Noviembre 2012, 15:46 pm
por Shell Root
Se puede evitar inyección DLL ?
Análisis y Diseño de Malware
Vaagish 4 3,443 Último mensaje 29 Noviembre 2013, 22:45 pm
por Vaagish
Evitar inyeccion y burp suite java
Seguridad
kkshihack 0 1,874 Último mensaje 11 Febrero 2016, 18:57 pm
por kkshihack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines