在where子句中SQL注入漏洞可能发生的最坏情况是什么?

时间:2011-07-23 00:08:07

标签: php mysql sql mysqli sql-injection

如果我的PHP代码在where语句中有一个SQL注入漏洞,即SELECT * FROM table WHERE id='$unescapedstring',那么我的数据库可能发生的最坏情况是什么?

抱歉忘了提到mysql

3 个答案:

答案 0 :(得分:4)

如果$unescapedstring设置为cake';DROP TABLE 'table';--怎么办?那将执行select,然后执行DROP TABLE语句。用你想要的任何sql替换drop table,你就可以自己执行任何SQL了。他们可以下载您的数据库,或擦除它,或修改记录......只是不要这样做。消除你的输入!否则,您的用户可以自由控制您的数据库。

答案 1 :(得分:1)

可能发生的最坏情况?我会说任何可以在该查询中发生。

例如,我提交了这个:

unescapedstring: '; (any other query)

现在,您的查询变为:

SELECT * FROM table WHERE id=''; (any other query)

从那里,我可以执行任何 MySQL命令。我可以删除整个数据库,我可以编辑它,我可以下载你的数据库,如果你的服务器允许,我甚至可以根据你的实际服务器。

基本上,攻击者可以完全访问您的MySQL安装。期待什么。

答案 2 :(得分:1)

虽然其他答案完全正确,但如果您正确设置了mysql用户帐户,则执行这些查询的帐户可能无权更改/创建/删除表/数据库。因此,在这种情况下可能发生的最坏情况:DELETE FROM table