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