从SQL注入中恢复

时间:2010-05-01 02:48:24

标签: php sql-injection

我们不要说我是偏执狂,但我一小时都在花时间学习如何防止SQL注入(以及XSS的价值)。

我想知道的是,如果我进行了每日备份,那么SQL注入似乎不会对我的数据库造成永久性伤害。不导入我昨天的表格副本只是恢复它们然后我可以快乐地走了吗?

4 个答案:

答案 0 :(得分:9)

就实际的数据丢失而言,你大部分都是正确的 - 你会失去过去一天所做的任何改变,但除此之外你还会回到功能数据库。

然而,还有其他一些事情,仅仅因为它们没有“丢失”,并不意味着它们受到妥协并不坏。这些类似于用户帐户信息(尤其是密码哈希)的东西 - 人们用来保护帐户的东西,如果被错误的人发现,可能会导致恶意使用他们的信息和资源。

这就是为什么你必须首先努力避免安全漏洞,而不是简单地回滚任何更改。

答案 1 :(得分:1)

这是一种非常危险的思考方式。是的,SQL注入攻击通常会丢弃数据库,从而立即崩溃您的Web应用程序,之后您(有时)从备份中快速恢复并继续您的(有点)快乐方式。

另一方面,它们可能会随意地随意吹走或改变一些记录,因此需要数周甚至数月才能发现您的数据在很长一段时间内已经慢慢损坏。祝你好运从中恢复过来。

更糟糕的是,SQL注入攻击可能被设计为窃取数据而不是破坏数据。攻击者可能会想出如何让您的网站提供一堆信用卡号码,以响应名义上编辑其个人资料的请求。

答案 2 :(得分:0)

是,除非该表包含用户敏感和/或XSS注入的数据。然后你还有另一个需要解决的问题。在构造SQL查询期间始终sanitize进行SQL注入,并且在HTML输出中显示客户端控制的数据期间,始终sanitize进行XSS注入。

答案 3 :(得分:0)

其他人已经注意到您已经部分解决了数据丢失的问题(从希望最近的备份恢复)但是错过了数据盗窃的问题。

还有另一个潜在的问题。许多SQL服务器允许您执行任意系统命令(例如MS SQL)。其他(例如MySQL)允许您编写任意文件(另请参阅this article关于利用MySQL注入)。最重要的是,SQL注入攻击可以危及整个系统,从而向前发展。当然,有一些配置选项可以禁用其中的一些,但它们是真正的问题。

如果您需要推荐,我建议您PDO使用prepared statements