如何通过SQL注入更新列?

时间:2012-01-31 20:23:51

标签: sql code-injection

我没有找到关于此的更多信息,但我听说可以在URL栏中输入SQL查询以从数据库中提取数据,我只是想知道是否也可以通过更新列或表它

以下是一个例子:

SELECT * 
FROM table 
WHERE 1 = '2' 
AND 3 = '$input'

是否可以在URL栏中使用更新查询,如果是,如何使用?

1 个答案:

答案 0 :(得分:6)

如果有人像这样创建一个SQL查询字符串

 sql = "SELECT * FROM table WHERE name = '" & input & "';"

然后输入是

input = "John'; DELETE FROM table WHERE 'x'='x"

生成的SQL将是

SELECT * FROM table WHERE name = 'John'; DELETE FROM table WHERE 'x'='x';

它将包含两个SQL语句。然后第二个可以做任何注射器想要的事情。


有两种可能性可以防止这种情况发生。

1

转义输入中的单引号

 sql = "SELECT * FROM table WHERE name = '" & Replace(input, "'", "''") & "';"

将错误输入转换为字符串的一部分

SELECT * FROM table WHERE name = 'John''; DELETE FROM table WHERE ''x''=''x';

2

使用参数代替字符串连接

cmd = new Command("SELECT * FROM table WHERE name = @n")  
cmd.AddParameter("@n", input)  
result = cmd.Execute()  

详细信息取决于数据库,数据库访问技术和使用的编程语言。我的例子必须被理解为伪代码。