当我的URL末尾有撇号时,为什么会出现SQL错误?

Meo*_*Meo 2 php sql-injection

当我添加'到URL的末尾时,为什么会出现错误?例如 :http://mywebsite.com/singel?id=24'

我收到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' LIMIT 1' at line 1

如果我'在查询字符串中放入任何id之后,这随处可见.

有什么不对,怎么修好?谢谢.

Arn*_*anc 7

您正在SQL查询中插入非转义变量.如果此变量恰好包含SQL特殊字符,则可能导致SQL语法错误或更糟.

在将变量插入SQL查询之前,需要转义变量.

例:

$query = "SELECT * FROM users WHERE id = " . mysql_real_escape_string($id);
Run Code Online (Sandbox Code Playgroud)

而不是(这是错误的,不要这样做):

$query = "SELECT * FROM users WHERE id = $id LIMIT 1";
Run Code Online (Sandbox Code Playgroud)

如果$id24',查询变为:

$query = "SELECT * FROM users WHERE id = 24' LIMIT 1";
Run Code Online (Sandbox Code Playgroud)

如您所见,有一个'after 24,这是一个语法错误.