SQL注入方法

时间:2017-07-03 04:55:08

标签: sql sql-injection

注射程序是:

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;

但是,我的问题是注入查询在sql中是如何工作的?

2 个答案:

答案 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注入。