2010-04-29 10 views
10

Zawsze czytałem, że Magiczne Cytaty nie zatrzymują iniekcji SQL w ogóle, ale nie jestem w stanie zrozumieć, dlaczego nie! Jako przykład, powiedzmy, że mamy następujące zapytanie:Pomyślne SQL Injection pomimo PHP Magic Quotes

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

Teraz, jeśli dane wejściowe użytkownika sprawia $x=' OR 1=1 --, zapytanie będzie:

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

Odwrotny ukośnik zostanie dodana przez Magii Cytaty bez obrażenia zrobione w ogóle!

Czy istnieje sposób, w jaki nie widzę miejsca, w którym użytkownik może ominąć wstawki Magic Quote?

Odpowiedz

21

Sztuczka polega zwykle na przekazywaniu wartości binarnej, aby odwrotny ukośnik stał się częścią prawidłowego znaku wielobajtowego. Poniżej znajduje się blog post.

+0

Zawsze miałem wrażenie, że wstrzyknięcie SQL było poważniejszym problemem, który prawdopodobnie dotyczy prawie wszystkich prób początkujących skryptu. Nadal nie mogę uwierzyć, że magiczne cytaty czynią cię absolutnie bezpiecznym, chyba że użyłeś wielobajtowego zestawu znaków. –