我一直读到魔术引号根本不能停止SQL注入,但是我不明白为什么不这样做!例如,假设我们有以下查询:
SELECT * FROM tablename WHERE email='$x';
现在,如果用户输入make $x=' OR 1=1 --,则查询将是:
$x=' OR 1=1 --
SELECT * FROM tablename WHERE email='\' OR 1=1 --';
反斜杠将由Magic Quotes添加,而不会造成任何损害!
有没有办法我看不到用户可以在此处绕过Magic Quote插入的地方?
技巧通常是传递一个二进制值,以使反斜杠成为有效的多字节字符的一部分。这是关于它的博客文章。