Foros del Web » Programando para Internet » PHP »

Usar mysql_real_escape_string

Estas en el tema de Usar mysql_real_escape_string en el foro de PHP en Foros del Web. Buenos días. estoy usando mysql_real_escape_string() para inyección de código. Hay algún sitio donde diga un listado de todos los carácteres que escapa? 1.- En el ...
  #1 (permalink)  
Antiguo 13/05/2014, 05:28
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Usar mysql_real_escape_string

Buenos días.

estoy usando mysql_real_escape_string() para inyección de código.

Hay algún sitio donde diga un listado de todos los carácteres que escapa?

1.- En el caso de guardar un texto, por ejemplo, textarea, sería bueno usar mysql_real_escape_string($_POST('textarea'))) (pueden escribir cualquier cosa)?
2.- En el caso de hacer SELECTS con código php se debería usar por ejemplo:

Código PHP:

$listado
="";
for(
$i=0;$i<$count($matriz);$i++){
  if(
$i>0$listado.=",";
  
$listado.=mysql_real_escape_string($matriz[$i]);
}

$sql="SELECT nombre 
          FROM personas 
          WHERE codigo IN ("
.$listado.");"
o el mismo con OR


Código PHP:
$listado="";
for(
$i=0;$i<$count($matriz);$i++){
  if(
$i>0$listado.=" OR ";
  
$listado.="codigo=".mysql_real_escape_string($matriz[$i]);
}

$sql="SELECT nombre 
          FROM personas 
          WHERE "
.mysql_real_escape_string($listado).";"

Saludos
  #2 (permalink)  
Antiguo 13/05/2014, 05:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Usar mysql_real_escape_string

en el manual de php puedes conseguir información.

con respecto al uso de IN u OR, es exactamente lo mismo (para tu caso), usa el que más se adapte a tus necesidades


PD: te recomiendo que a futuro uses las librerías PDO o MySQLi ya que la nativa esta obsoleta.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 13/05/2014, 05:50
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Usar mysql_real_escape_string

Hola,

gracias por responder.

Referente a mysql, se que está obsoleto y debería usar por ejemplo mysli, tengo que ir cambiando el código poco a poco gracias.

Referente a la documentación php dice :

Código HTML:
mysql_real_escape_string() llama a la función mysql_real_escape_string de la biblioteca de MySQL, la cual antepone barras invertidas a los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a.
Que pasa con carácteres como "%" o "#".

Referente al ejemplo del SELECT IN o OR, me gustaría saber si lo estoy usando bien, es decir, mysql_real_escape_string para cada variable de la matriz pero que pasa con $listado, se supone que no hay nada que escapar cuando lo uso dentro del string $sql porque justo lo que creado anteriormente?


Saludos
  #4 (permalink)  
Antiguo 13/05/2014, 05:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Usar mysql_real_escape_string

si para mysql los caracteres "%" o "#" no son especiales o importantes no deberías tener problemas, si no prueba tu mismo inyectando dichos caracteres y compruébalo .

solo deberías escapar lo que proviene del ingreso del usuario, es decir, lo que no puedes controlar, en cambio $listado lo construyes tú, así que tu puedes garantizar que no tenga caracteres especiales, no puedes escapar $listado porque incluso puedes perder la sintaxis de SQL que necesitas para que funcione, así como lo haces está bien
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 13/05/2014, 06:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Usar mysql_real_escape_string

Hola,

si ya lo intento pero no se me da bien esto de "inyectar código" jeje.

Tal como lo hago está bien entonces, aunque como dices, si lo tengo controlado no hace falta porque $listado lo creo yo, pero $matriz tampoco porque lo creo yoy así subiendo..:

Código PHP:

$matriz
[0]=1;
$matriz[1]=2;
$matriz[2]=8;
get_nombres($matriz);
//
function get_nombres($matriz){
  
$listado=""
  for(
$i=0;$i<$count($matriz);$i++){ 
  ...

Pero entiendo que es mejor asegurar todas las variables de las consultas.

Gracias por las respuestas.

Saludos
  #6 (permalink)  
Antiguo 13/05/2014, 06:11
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Usar mysql_real_escape_string

sí, pero aseguras escapando los valores, no el SQL completo, sino, el desastre, saludos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: mysql, select, sql, usar
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 04:25.