2010-04-29 4 views
10

J'ai toujours lu que Magic Quotes n'arrête pas du tout les injections SQL, mais je ne suis pas capable de comprendre pourquoi! À titre d'exemple, disons que nous avons la requête suivante:Injection SQL réussie malgré PHP Magic Quotes

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

Maintenant, si l'entrée utilisateur fait $x=' OR 1=1 --, la requête serait:

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

La barre oblique inverse sera ajouté par Magic Quotes sans dommage fait quoi que ce soit!

Existe-t-il un moyen que je ne vois pas où l'utilisateur peut contourner les insertions Magic Quote ici?

Répondre

21

L'astuce consiste généralement à transmettre une valeur binaire afin que la barre oblique inverse fasse partie du caractère multi-octet valide. Voici un blog post à ce sujet.

+0

J'ai toujours eu l'impression que l'injection SQL était un problème plus sérieux qui affectait presque toutes les tentatives d'un script. Je n'arrive toujours pas à croire que les citations magiques vous rendent absolument sûr, sauf si vous avez utilisé un jeu de caractères multi-octets. –