2010-04-29 8 views
10

Siempre he leído que Magic Quotes no detiene las inyecciones de SQL en absoluto, pero no puedo entender por qué no! A modo de ejemplo, supongamos que tenemos la siguiente consulta:Exitosa inyección de SQL a pesar de las cotizaciones de PHP Magic

SELECT * FROM tablename 
    WHERE email='$x'; 

Ahora, si la entrada de usuario hace $x=' OR 1=1 --, la consulta sería:

SELECT * FROM tablename 
    WHERE email='\' OR 1=1 --'; 

La barra invertida se añadirá por Magic Cotizaciones sin daño hecho en absoluto!

¿Hay alguna manera de no ver dónde el usuario puede pasar por alto las inserciones de Magic Quote aquí?

Respuesta

21

El truco suele ser pasar un valor binario para que la barra diagonal inversa se convierta en una parte del carácter multibyte válido. Aquí hay un blog post al respecto.

+0

Siempre tuve la impresión de que la inyección SQL era un problema más serio que posiblemente afectaba a casi todos los intentos de principiante en un script. Todavía no puedo creer que las citas mágicas te hagan completamente seguro a menos que hayas usado un juego de caracteres de varios bytes. –

Cuestiones relacionadas