通常,'
符号用于标识某些站点是否容易受到SQL注入的攻击。
127.0.01/index.php/?id=1
的常规SQL查询示例
SELECT username,password FROM db.table WHERE id = '1'
这是因为'
用于中断SQL语句,并且由于'
中附加了/?id=1'
符号而将导致错误。>
SELECT username,password FROM db.table WHERE id = '1''
顺便说一句,该语法应该产生SQL错误,因为缺少另一个
'
,但是没有。
mysql> SELECT username,password FROM db.table ID = 1'; '> '> '>
但是,我仍然能够在Linux Shell中重现该错误。
wolf@Linux:~$ mysql -u root -e "SELECT username,password FROM db.table WHERE ID = 1'" ERROR 1064 (42000) at line 1: 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 ''' at line 1 wolf@Linux:~$
但是在某些情况下,使用负数,例如
/?id=-1
我没有得到这部分,因为无效值,例如-1
或表范围之外的任何数字在SQL上都不会产生任何结果。
mysql> SELECT username,password FROM db.table WHERE ID = 9999; Empty set (0.00 sec) mysql> SELECT username,password FROM db.table WHERE ID = -1; Empty set (0.00 sec)
如果有人可以解释这一点,我将不胜感激。谢谢
通常,'符号用于标识某些站点是否容易受到SQL注入攻击。 127.0.01 / index.php /?id = 1 SELECT用户名的普通SQL查询示例,密码来自db.table WHERE id ...