提问人:user2161171 提问时间:10/26/2022 最后编辑:Joel Coehoornuser2161171 更新时间:10/27/2022 访问量:154
将数据从表复制到另一个表时是否可能进行 SQL 注入或任何其他攻击
Is SQL injection or any other attack possible while copying data from table to another table
问:
我有 2 张表,TableA 和 TableB。TableA 包含不可靠的数据,用户可以在此表中输入他们想要的任何数据。我想使用以下命令将数据从 TableA 复制到 TableB:
Insert into tableB(col1,col2)
select col1,col2
from TableA
where find_in_set('someStaticText',replace(col3,';',',')
从 TableA 复制此数据时是否有可能发生 SQL 注入或任何其他攻击?
我已经尝试了标准的 SQL 注入示例,但这似乎不是问题,而且由于我的 SQL 查询是静态的“插入 tableB 从 tableA 中选择”,我也没有看到任何问题。
但是,由于我们正在处理来自 TableA 的完全不可靠的数据,因此无论如何都可以确保在复制数据时不会出现任何问题。
答:
SQL注入攻击是指用户提交的字符串(或者更确切地说,是未在代码中创建的任何输入,您自己保证是安全的)在发送到数据库之前将其注入可执行SQL代码。
经典的例子在 XKCD 中永垂不朽;据推测,用户输入被注入到类似 的东西中,创建以下一系列语句:Robert'); DROP TABLE Students; --
INSERT INTO Students VALUES ('$name')
INSERT INTO Students VALUES ('Robert');
DROP TABLE Students;
--');
请注意,如果语句被正确编写,无论是作为预准备语句 () 还是字符串首先被正确转义(这将转换为 ),它就会被正确插入;一旦进入数据库,它就只是数据,没有特殊的超能力。INSERT INTO Students VALUES (?)
Robert'); DROP TABLE Students; --
Robert''); DROP TABLE Students; --
至关重要的是,危险位是在应用程序代码中创建 SQL 语句文本的位置,而不是在数据库中。由于你的SQL语句是静态字符串,所以不能注入任何东西,也不可能有SQL注入攻击。
评论