Foros del Web » Programando para Internet » PHP »

Error con mysql_real_escape_string

Estas en el tema de Error con mysql_real_escape_string en el foro de PHP en Foros del Web. Buenas a todos Utilizo esta función para evitar la inyección de código malicioso. Aunque he leído que posiblemente no es suficiente.. Código: function mysql_real_escape_array($t){ return ...
  #1 (permalink)  
Antiguo 17/10/2009, 06:26
 
Fecha de Ingreso: noviembre-2007
Ubicación: Zamora (Spain)
Mensajes: 251
Antigüedad: 16 años, 5 meses
Puntos: 1
Pregunta Error con mysql_real_escape_string

Buenas a todos

Utilizo esta función para evitar la inyección de código malicioso. Aunque he leído que posiblemente no es suficiente..

Código:
function mysql_real_escape_array($t){
	return array_map("mysql_real_escape_string",$t);
}
$_POST = mysql_real_escape_array($_POST);
$_GET = mysql_real_escape_array($_GET);
Hasta ahora no me ha dado problemas, pero la he intentado utilizar para un script que me permite desde un formulario html subir varios archivos de forma dinámica y al procesarlo me sale este error:

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /xxxxxxxxx/xxxxxx/xxxxx/xxxx/antinyeccion.php on line 3

Alguien podría indicarme el motivo?, es como si los arrays de tipo FILE no le gustasen...

Mil gracias y un saludo,
  #2 (permalink)  
Antiguo 17/10/2009, 08:55
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Error con mysql_real_escape_string

Asi es, los arrays $_FILE "no le gustan", ya qe estos son arrays de 2 dimensiones, o sea, cada elemento del array $_FILE es un array, por lo tanto, al llamar a mysql_real_escape_string con cada elemento de $_FILE, le estas pasando como parametro un array, cuando esta espera una cadena.
  #3 (permalink)  
Antiguo 17/10/2009, 10:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con mysql_real_escape_string

Cita:
Iniciado por xenon254 Ver Mensaje
Buenas a todos

Utilizo esta función para evitar la inyección de código malicioso. Aunque he leído que posiblemente no es suficiente..

Código:
function mysql_real_escape_array($t){
	return array_map("mysql_real_escape_string",$t);
}
$_POST = mysql_real_escape_array($_POST);
$_GET = mysql_real_escape_array($_GET);
Hasta ahora no me ha dado problemas, pero la he intentado utilizar para un script que me permite desde un formulario html subir varios archivos de forma dinámica y al procesarlo me sale este error:

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /xxxxxxxxx/xxxxxx/xxxxx/xxxx/antinyeccion.php on line 3

Alguien podría indicarme el motivo?, es como si los arrays de tipo FILE no le gustasen...

Mil gracias y un saludo,


el error es muy claro...

dice que no se aceptan arrays(), solo strings... para mysql_real_escape_string()

y obviamente, $_GET, $_POST, $_FILES, etc... son arrays!!!


__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 17/10/2009, 10:23
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Error con mysql_real_escape_string

Cita:
Iniciado por pateketrueke Ver Mensaje
el error es muy claro...

dice que no se aceptan arrays(), solo strings... para mysql_real_escape_string()

y obviamente, $_GET, $_POST, $_FILES, etc... son arrays!!!


No tan claro al parecer (yo cometi el mismo error que tu al pensar eso, pero antes de postear lei de nuevo y el error no es ese), si lees con atencion el codigo te daras cuenta qe no esta llamando a mysql_real_escape_string pasandole esos arrays, sino pasandole cada uno de los elementos de esos arrays.

El error, como mencione, es que en $_FILES, cada uno de los elementos si es un array :)
  #5 (permalink)  
Antiguo 17/10/2009, 11:45
 
Fecha de Ingreso: noviembre-2007
Ubicación: Zamora (Spain)
Mensajes: 251
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Error con mysql_real_escape_string

Buenas

Gracias por vuestras explicaciones. La verdad es que solo he tenido problema con $_FILES en todas las pruebas, por lo que cierto es que no soporta lo multidimensional.

Visto el problema, busco la solución.

Mi pregunta es, ¿como puedo indicarle que si encuentra estos casos, no los evalue, pero siga siendo efectivo para cumplir su misión?, que no es otra que la de evitar al inyección, como bien sabéis.

He visto otro código, podéis verlo aquí.
http://unidadlocal.com/Evitar_inyecc...ascript_en_PHP
  #6 (permalink)  
Antiguo 17/10/2009, 12:02
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Error con mysql_real_escape_string

No suelo dar codigo hecho pero esto me intereso :o
Puedes probar este par de funciones
Código PHP:
function mysql_real_escape_array2($t){
if(
is_array($t))
    return 
array_map("mysql_real_escape_string",$t);
else
    return 
mysql_real_escape_string($t);
}
function 
mysql_real_escape_array($t){

    return 
array_map("mysql_real_escape_array2",$t);

Funcionaria igual llamando a mysql_real_escape_array
  #7 (permalink)  
Antiguo 18/10/2009, 04:09
 
Fecha de Ingreso: noviembre-2007
Ubicación: Zamora (Spain)
Mensajes: 251
Antigüedad: 16 años, 5 meses
Puntos: 1
Pregunta Respuesta: Error con mysql_real_escape_string

Muchas gracias por tu código. Funciona sin problemas.


Respecto a su utilidad para evitar la inyección, ¿este método es seguro?.

Última edición por xenon254; 18/10/2009 a las 04:17
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 13:02.