elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Que finalidad tiene esto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Que finalidad tiene esto?  (Leído 2,517 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Que finalidad tiene esto?
« 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
  1. if(get_magic_quotes_gpc()) $string = stripslashes($string);
  2. return mysql_real_escape_string($string);
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
  1. return $string;

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...


« Última modificación: 7 Febrero 2009, 23:21 pm por Alex_bro » En línea

Dacan

Desconectado Desconectado

Mensajes: 237



Ver Perfil WWW
Re: Que finalidad tiene esto?
« Respuesta #1 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


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Que finalidad tiene esto?
« Respuesta #2 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
En línea

Agente Naranja


Desconectado Desconectado

Mensajes: 535


uguu~


Ver Perfil WWW
Re: Que finalidad tiene esto?
« Respuesta #3 en: 12 Febrero 2009, 10:14 am »

¿Y si quitas stripslashes y solamente usas el mysql_real_scape_string?
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Que finalidad tiene esto?
« Respuesta #4 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
  1. <?php
  2. // Realizar un set_magic_quotes_runtime(0) con allstripslashses por WHK
  3.  
  4. // Uso:
  5. $_POST = allstripslashses($_POST);
  6. $_GET = allstripslashses($_GET);
  7. $_COOKIE = allstripslashses($_COOKIE);
  8. $_SERVER = allstripslashses($_SERVER);
  9. $_REQUEST = allstripslashses($_REQUEST);
  10. $palabra = allstripslashses("cmd /c echo \'%homedrive%\\ = c:\\\' ");
  11.  
  12. // Imprime resultados
  13. echo htmlspecialchars($palabra, ENT_QUOTES);
  14. echo '<br />Arrays totales:<br />';
  15. print_r($_POST);
  16. print_r($_GET);
  17. print_r($_COOKIE);
  18. print_r($_SERVER);
  19. print_r($_REQUEST);
  20.  
  21. // Función
  22. function allstripslashses($data){
  23. if(is_array($data)){
  24.  foreach($data as $variable => $valor){
  25.   $retorno[stripslashes($variable)] = stripslashes($valor);
  26.  }
  27.  return $retorno;
  28. }else{
  29.  return stripslashes($data);
  30. }
  31. }
  32.  
  33. ?>

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).
« Última modificación: 12 Febrero 2009, 21:51 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda. ¿Esto ya tiene nombre?
Criptografía
Puroguramu 1 3,141 Último mensaje 5 Diciembre 2012, 11:13 am
por APOKLIPTICO
¿Esto tiene virus ?
Análisis y Diseño de Malware
iStranger_Brk 5 4,027 Último mensaje 7 Octubre 2019, 09:53 am
por RainSix
correos sin sentido ... ¿que finalidad tiene?
Desarrollo Web
OssoH 6 3,288 Último mensaje 29 Diciembre 2020, 13:30 pm
por Danielㅤ
Que son bots informáticos y cual es su finalidad?
Seguridad
win_7 1 2,508 Último mensaje 31 Mayo 2021, 12:41 pm
por simorg
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines