如何避免对现有代码进行sql注入

时间:2012-03-06 05:11:40

标签: php mysql

我的网站上有一个mysql注入。它有1000个现有的php文件。从过去的6个月开始,当我编码时,我确保代码是免费注入的。但是有没有任何解决方案如何在不更改每个文件的情况下保护遗留代码。

5 个答案:

答案 0 :(得分:1)

抱歉,没有魔杖挥手。您将不得不审核任何和所有暴露给用户输入的代码(甚至是间接的),并验证它是安全的还是修复它。

答案 1 :(得分:1)

几年前,我帮助支持的遗留应用程序遭到黑客入侵,而且文件占用空间也很大。解决所有遗留文件问题所需的时间非常长,因此我们决定添加Mod Security层以帮助缓解重建应用程序时的问题。

如果您的网站对您很重要,并且在搜索和销毁代码中的漏洞时需要一些额外的保护,我强烈推荐Mod Security。如果您管理自己的Apache服务器,则可以在本地设置它,或者您可以设置代理服务器,其唯一的责任是清理传入的请求。我使用两者都取得了很高的成功率。

答案 2 :(得分:0)

如果它们存在于每个文件中,它将涉及更改所有可利用的代码!有许多不同的方法可以在您的网站上使用标准化的卫生功能或清理和过滤输入,但如果每个页面都是单独编写的,并且每个页面都包含可利用的代码,则需要更正每个页面......

答案 3 :(得分:0)

这是一个非常浩大的字段。但是,我能给你点几点

  • 清理并过滤您从用户收到的所有输入。
  • 正确处理每个错误。甚至不会留下触发错误的可能性 (这是非常重要的一点,也是大多数黑客的主要原因)
  • 如果以前有过违规行为,请检查apache的日志文件以查看注入的位置。或黑客攻击发生的地方。
    1. 主要有两种类型的日志文件在apache中维护。 access_logerror_log
    2. 发生违规后,请备份日志并缓解问题,查看日志。
  • 如果您当前正在维护的系统有可用的文档,则可以更快地检测到漏洞。

一些有用的参考资料

  1. http://php.net/manual/en/security.database.sql-injection.php
  2. http://simon.net.nz/articles/protecting-mysql-sql-injection-attacks-using-php/
  3. How hacking occurs?

答案 4 :(得分:0)

首先,如果您设法合理地整合和组织代码,那么问题就可以被隔离。如果注射是问题,那么你需要考虑的是(如果你使用MVC模式)你的所有模型。如果您的查询方法是安全的,那么至少有一半的问题会像(快照)那样被冲走!其余的应该是另一半 - 您的验证脚本(如果您遵循MVC,应该归类为“帮助者”和“库”)

然而,如果你的“1000+”PHP代码是一堆“复制,粘贴,运行正确的蝙蝠”,那么除了手动对等每个代码之外,你无能为力,跟踪并测试出代码。此外,要达到那么多PHP文件,你应该考虑创建一个可维护的代码。