如果发生SQL注入,你如何扭转它

时间:2016-05-25 13:25:02

标签: php sql sql-injection

我将进入数据库设计和PHP。但是当我这样做时,我非常担心SQL-Injecting。无论如何,当它发生时反正这一点。像自动重置它,或删除被黑客攻击的帐户,或关闭数据库。还有一种方法可以对入侵者进行自动测试吗?

3 个答案:

答案 0 :(得分:3)

这是一个非常复杂的问题。 简短的回答是:不,如果没有备份

答案很长: 您应该主要关注如何防止sql注入,例如使用预处理语句是防止这些攻击的好方法。无论潜在的SQL注入漏洞如何,都应定期备份并存储在不同的物理位置。带有数据库的服务器的数据中心可能会烧毁,您的数据也会消失。虽然这种情况不太可能发生,但并非不可能。

根据数据库中数据的重要性,有一些方法(例如cron作业)可以每周,每天,每小时等进行备份。如果您有第二台服务器,您可以编写一个脚本,将备份发送到秒服务器,或者您不时登录并下载它们。

您还可以记录数据库中的所有交互和更改,但以这种方式扭转损坏是不切实际的。

此链接可能对您有用:Prevent SQL Injection in PHP

答案 1 :(得分:1)

如果您获得SQL注入攻击者获得与您的应用程序相同的权限,他们可以删除或更改他们想要的任何内容,所以基本上你运气不好。您可以从备份还原数据库,但是您将丢失备份和攻击之间发生的任何更改。

不要试图检测并恢复SQL注入,而是首先避免允许它们,避免SQL注入的一个好方法是使用PDO's prepared statements

答案 2 :(得分:0)

简单地说,如果它发生了,你几乎已经迷失了。断开数据库与互联网的连接并评估损坏,转储损坏的版本以供以后分析或诸如此类,以及恢复到最接近的非破坏备份,可能是大多数情况下的最佳行动方案。

但你应该做的是首先防止它。 虽然可以进行转义和/或模式检查,但使用准备/参数化语句和/或对象关系映射来解决它会好得多。 许多主要框架都带有某种形式的ORM,除非您对覆盖所有安全漏洞或在安全性完全可选的情况下非常自信,否则我建议您使用类似的东西。 除了SQL注入之外,这还可以保护您免受各种其他安全风险的侵害,并以其他方式为您提供帮助 例如,请查看FuelPHP