Título: Que finalidad tiene esto? Publicado por: Alex_bro en 7 Febrero 2009, 22:55 pm Buenas,
A ver si me pueden ayudar a entender que hacen estas 2 lineas de codigo... Código A mi entender, al detectar las magic quotes activadas les quita las barras para luego volverselas a poner con mysql_real_escape_string(); Estas lineas las encontre en una clase para conectar con mysql. No seria mas logico lo siguiente? Código
El problema es que esta clase cuando te devulve un query les quita de nuevo las barras con stripslashes, y ya me tiene loco! Si lo dejo como viene me borra la mitad de las barras que introduce el usuario (y solo quiero escaparlas para evitar sql injection, no borrarlas) y si lo quito si que me devulve la cadena tal y como la introduzco... por lo cual no se habrian escapado los caracteres en el query... Gracias! PD: Estudiando mi script, me doy cuenta de que aunque get_magic_guotes_gpc() devuelve TRUE en el servidor, realmente no escapa ningun caracter y me esta volviendo loco! EDITO: Es posible hacer algo malicioso si escapo las comillas con htmlentities y dejo todo lo demas? Asi me evito todos estos lios de slashes y demas... Título: Re: Que finalidad tiene esto? Publicado por: Dacan en 7 Febrero 2009, 23:41 pm Se traduce como si las magic quotes no están activadas se le pasa la función mysql_real_escape_string a la variable.
Saludos, Dacan :D Título: Re: Que finalidad tiene esto? Publicado por: WHK en 8 Febrero 2009, 08:40 am Código Mas corto y ya, con eso ya no te pueden joder con una sql inyeccion a menos que procese algun dato sin encerrarse en comillas o integrar integers sin filtrar (int)$val, todo depende de $string Título: Re: Que finalidad tiene esto? Publicado por: Agente Naranja en 12 Febrero 2009, 10:14 am ¿Y si quitas stripslashes y solamente usas el mysql_real_scape_string?
Título: Re: Que finalidad tiene esto? Publicado por: WHK en 12 Febrero 2009, 21:48 pm Así es pero por lo general una buena programación te hace filtrar las variables antes de ser utilizadas removiendo los slashses y después de eso continúa todo el script y evitas tener que filtrar los datos con esa función cada ves que metas valores en funciones o algo.
Código
Es casi lo mismo que utilizar set_magic_quotes_runtime(0) solo que en algunos servidores no puedes utilizar esta función así que apelas a un poco de ingenio para crear el mismo resultado. Cuando quieras hacer una query ahora en mysql puedes hacerla directamente con mysql_real_escape_string($string). |