Problemas con la función mysql_real_scape_string

Iniciado por -Ramc-, 23 Octubre 2009, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

-Ramc-

Hola, tengo un problema con la función mysql_ real_scape_string, tengo esta función:

Código (php) [Seleccionar]
function cleanQuery($value) {
$value = trim(html entities($value));
if (get_ magic_quotes_gpc()) {
$value = strip slashes($value);
}
$value = mysql_real_ escape_string($value);
return $value;
}


El problema está con la función mysql_real_ escape_string, siempre que use esa función, voy a tener como resultado una cadena vacia, sin importar lo que le pase como parametros, incluso si hago algo como:
echo mysql_real_ escape_string("Hola")."jaja";

Sólamente imprime la cadena jaja.

He hecho:
echo function_exists("mysql_real_ escape_string");

y me devuelve 1 por lo que si existe.

La función cleanQuery, devuelve algo siempre y cuando le quite mysql_real_ escape_string,

Uso Apache Server 2.2.13, php 5.2.10 y mysql 5.0.84 sobre Slackware 13.0.

Espero que alguien puede ayudarme.

Saludos y Gracias.

EDIT: Las funciones tienen espacios porque sino el mod_security me lanza error y no me deja postear.

EDIT2: Subí la web a 000webhost y pasa lo mismo, mysql_real_escape_string limpia muy bien, por ahora estoy usando esto para prevenir SQLi:

Código (php) [Seleccionar]
function cleanQuery($value) { //Limpiar consultas SQL
$value = trim(html entities($value));
$value = add slashes($value);
return $value;
}


¿Qué tan seguro es?, puedo usar ese y obviar la otra función??? Hasta ahora me a funcionado bien esa nueva función, pero, uno nunca sabe xD.

Gracias.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

HardieVon

Esta chido eso, bueno ese no es un codigo valido ya que la función tiene un espacio pero X.

lo que podrias meter es una derivación para casting cuando las referencias sean hacia un campo INT, con eso tienes asegurado todo.

-Ramc-

Cita de: HardieVon en 23 Octubre 2009, 21:28 PM
Esta chido eso, bueno ese no es un codigo valido ya que la función tiene un espacio pero X.

lo que podrias meter es una derivación para casting cuando las referencias sean hacia un campo INT, con eso tienes asegurado todo.

Tienen espacios por lo que mencione del mod_security del foro, que piensa que es código malicioso.

Con los campos tipo entero si compruebo que sean números lo que esten ingresando y hago casting, pero, con los campos de texto estoy usando la segunda función que puse ya que con mysql_real_escape_string tengo problemas, la función que uso me está funcionando bien, pero, igualmente quiero saber si es totalmente segura y ademas, me intriga el hecho de que mysql_real_escape_string no funcione.

Saludos.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

HardieVon

a si, bastante segura, solo que se te puedo filtrar un SELECT,

si te fijas

"-1 UNION SELECT 1,2,3,4,5 FORM information_schema.tables"

con tu funcion, esa inyeccion no se modifica osea que se puede clavar, puedes utilizar un filtro de palabras claves de SQL como FROM y UNION utilizando str_replace