我没有找到关于此的更多信息,但我听说可以在URL栏中输入SQL查询以从数据库中提取数据,我只是想知道是否也可以通过更新列或表它
以下是一个例子:
SELECT *
FROM table
WHERE 1 = '2'
AND 3 = '$input'
是否可以在URL栏中使用更新查询,如果是,如何使用?
答案 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语句。然后第二个可以做任何注射器想要的事情。
有两种可能性可以防止这种情况发生。
转义输入中的单引号
sql = "SELECT * FROM table WHERE name = '" & Replace(input, "'", "''") & "';"
将错误输入转换为字符串的一部分
SELECT * FROM table WHERE name = 'John''; DELETE FROM table WHERE ''x''=''x';
使用参数代替字符串连接
cmd = new Command("SELECT * FROM table WHERE name = @n")
cmd.AddParameter("@n", input)
result = cmd.Execute()
详细信息取决于数据库,数据库访问技术和使用的编程语言。我的例子必须被理解为伪代码。