Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

escapar caracteres

Estas en el tema de escapar caracteres en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola que tal... miren, estoy casi por terminar una clase para mysql bien copada... pero me queria asegurar de algo, un metodo que hice alli ...
  #1 (permalink)  
Antiguo 14/04/2009, 20:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta escapar caracteres

Hola que tal... miren, estoy casi por terminar una clase para mysql bien copada... pero me queria asegurar de algo, un metodo que hice alli dentro para saber si sirve o no...

Código PHP:
function escape $string )
{
    if ( 
$this -> link )
    {
        if ( 
get_magic_quotes_gpc () )
        {
            
$string stripslashes $string ) ;
        }
        
$string addcslashes mysql_real_escape_string $string $this -> link ) , '%_' ) ;
    }
    else
    {
        exit ( 
'MySQL connection does not exist, or failed. ' ) ;
        return 
FALSE ;
    }
    return 
$string ;

saludos y espero que me digan si esto escapara los strings como se debe para evitar el sql inject.

saludos y gracias...
  #2 (permalink)  
Antiguo 16/04/2009, 14:04
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 4 meses
Puntos: 55
Respuesta: escapar caracteres

esta bastante bien solamente cambiaria esta linea
$string = addcslashes ( mysql_real_escape_string ( $string , $this -> link ) , '%_' ) ;
por
return mysql_real_escape_string ( $string , $this -> link );
no hace falta pasarle el addcslashes
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 16/04/2009, 22:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: escapar caracteres

ok... gracias por responder... porque lo postie hace dias y nadie me respondia xD jeje gracias
  #4 (permalink)  
Antiguo 16/04/2009, 23:53
Avatar de Acron_0248  
Fecha de Ingreso: junio-2005
Ubicación: 127.0.0.1
Mensajes: 1.648
Antigüedad: 19 años, 6 meses
Puntos: 18
Respuesta: escapar caracteres

Bueno, addcslashes pudiera ser útil si hay alguna razón en especial por la cual se escapa, en este caso, %_ y dado que mysql_real_escape_string no escapa ese caracter, se podría preguntar ¿hay alguna razón para escaparlo?

Otra cosa (aunque muy particular) es que yo sacaría stripslashes del IF

Supongamos que, en efecto, magic quotes está activo y el código de escape será usado en una variable que obtiene su valor de un get, post o cookie, en cuyo dicho valores vendrán escapados, es decir:

Código PHP:

$var 
$_GET['algo']; // $_GET['algo'] supongamos que es "Esto es ' una prueba" 
En ese caso, $var tendría "Esto es \' una prueba".

Se utiliza stripslashes y genera "Esto es ' una prueba" y luego al usar mysql_real_escape_string vuelve a ser "Esto es \' una prueba"

Ahora bien, ¿y si magic quotes no está activo? ¿y si lo que se envía ya tiene un backslash? (porque lo agregó el usuario o algún proxy por pura maldad para probar qué ocurriría)

En dicho caso, el IF es false y por ende stripslashes no se llama. Digamos entonces que la cadena que se envió es en realidad "Esto es \' una prueba"

Dado que stripslashes no se ejecutaría (porque magic quotes no está activo), mysql_real_escape_string generaría entonces "Esto es \\\' una prueba"

Si estás usando stripslashes para controlar los caracteres que puedan llegar escapados antes de enviarlos a mysql_real_escape_string, entonces realmente no le veo mucho sentido a que sea implementado dentro de un IF que pueda dar como resultado false, más aún cuando hoy día la mayoría utiliza versiones de PHP que ya tienen magic quotes inactivo.

En ese caso, sería mejor usar stripslashes esté o no activo magic quotes
__________________
Usuario Reigistrado de linux #399288
  #5 (permalink)  
Antiguo 17/04/2009, 12:25
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: escapar caracteres

mm, si no habia pensado en eso... creo que es mejor usar stripslashes entonces normalmente y sacar el if...

graicas
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 03:09.