Foros del Web » Programando para Internet » PHP »

mysql_real_escape_string() para evitar SQL inyection

Estas en el tema de mysql_real_escape_string() para evitar SQL inyection en el foro de PHP en Foros del Web. Hola ¿Sería aconsejable aplicar a todas las variables $_POST y $_GET que entren de formularios o a través de la URL a las consultas sql ...
  #1 (permalink)  
Antiguo 15/03/2010, 09:32
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 0
mysql_real_escape_string() para evitar SQL inyection

Hola
¿Sería aconsejable aplicar a todas las variables $_POST y $_GET que entren de formularios o a través de la URL a las consultas sql la función mysql_real_escape_string() para evitar SQL inyection?

p. ej.:

$id=$_GET["id"];
$sql="SELECT * FROM tabla WHERE id='".mysql_real_escape_string($id)."'";

la consulta anterior sería lo mismo así:

$sql="SELECT * FROM tabla WHERE id=`$id`";

o así:

$sql="SELECT * FROM tabla WHERE id=`{$id}`";
  #2 (permalink)  
Antiguo 15/03/2010, 09:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mysql_real_escape_string() para evitar SQL inyection

Es lo recomendable para evitar "SQL inyection"
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/03/2010, 09:36
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: mysql_real_escape_string() para evitar SQL inyection

¿en vez de usar mysql_real_escape_string se puede hacer esto?

$sql="SELECT * FROM tabla WHERE id=`$id`";

o así:

$sql="SELECT * FROM tabla WHERE id=`{$id}`";
  #4 (permalink)  
Antiguo 15/03/2010, 09:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mysql_real_escape_string() para evitar SQL inyection

Entonces pueden hacer SQL Inyection, si no usas mysql_real_escape_string.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 15/03/2010, 09:41
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: mysql_real_escape_string() para evitar SQL inyection

Ok.
Weno y tambien es simple curiosidad:

Ya que se conoce como se ha creado y como está hecha esa función, se puede vurlar la seguridad de alguna manera, o es 100% fiable esa función?
  #6 (permalink)  
Antiguo 15/03/2010, 09:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mysql_real_escape_string() para evitar SQL inyection

Lee esto http://www.php.net/manual/en/securit...-injection.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 15/03/2010, 10:08
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: mysql_real_escape_string() para evitar SQL inyection

Bueno, algunas cosas hay que tener en cuenta, pero siempre van a poder hacerte SQL inyection, verdad?
  #8 (permalink)  
Antiguo 15/03/2010, 11:22
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años
Puntos: 14
Respuesta: mysql_real_escape_string() para evitar SQL inyection

No, no siempre. Lo que hace mysql_real_escape_string es precisamente "escapar" cualquier cosa que sea especial para MySQL dentro de esa cadena. Es decir, no va a interpretar nada de lo que haya pasado por esa función como código SQL y por tanto hacer una inyección SQL es imposible...
  #9 (permalink)  
Antiguo 15/03/2010, 11:26
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: mysql_real_escape_string() para evitar SQL inyection

¿Sería correcto usar esta función también?

function mysql_escape($cadena) {
if(get_magic_quotes_gpc() != 0) {
$cadena = stripslashes($cadena);
}
return mysql_real_escape_string($cadena);
}

la encontré aquí en forosdelweb

Última edición por PJ100; 15/03/2010 a las 12:20

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:33.