注射程序是:
SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;
但是,我的问题是注入查询在sql中是如何工作的?
答案 0 :(得分:1)
当您在代码中将查询作为字符串时,就像这样
Query = "SELECT UserId, Name, Password FROM Users WHERE UserId = '" + sUserID + "'"
所以你通过sUserID =" ABC'或1 = 1;"
这将被翻译为
SELECT UserId, Name, Password FROM Users WHERE UserId = 'ABC' OR 1=1
答案 1 :(得分:1)
由于条件1=1
始终为true
,因此在WHERE
语句的末尾添加条件会使其无关,并始终true
,就像{{1}一样语句根本不存在。因此,无论添加到WHERE
语句的任何其他条件如何,始终都会执行查询。
在您提供的示例中,如果您允许用户写下他们自己的WHERE
,他们可以在输入字段或网站的URL地址中写userID
,并且105 or 1=1
使or 1=1
无效,查询将始终选择数据,因此SQL注入。