除了SQL注入和XSS攻击之外还有什么我需要担心的吗?

时间:2012-11-12 22:25:29

标签: php mysql security xss sql-injection

我正在完成我的第一个“真正的”PHP应用程序,我正在努力确保它是安全的。我有点害怕,因为我不是一个“专家”PHP程序员,我可能会遗漏一些巨大的东西,所以我想给你一些关于我的应用程序的信息,希望你能告诉我这是不是案件。所以我们走了:

  • 我正在使用CMS来处理用户身份验证,所以我不必这样做 担心这一点。
  • 在开始工作后不久发现PDO 在我的应用程序中,我将所有代码移植到使用准备好的 PDO的陈述。
  • 我正在使用htmlentities()输出所有表格和数据库数据(即使我认为是安全的东西)。
  • 我的应用程序确实使用了会话变量和cookie变量,但两者的功能都非常不重要。
  • 我设计了我的表单处理功能,无论表单是以某种方式被更改,还是从服务器外提交都没关系(即我总是检查提交的数据以确保它有效)。
  • 我已尽力使所有错误消息和异常消息有礼貌但非常模糊。
  • 我强制通过https提供包含敏感信息的网页(例如登录页面)。

当我第一次开始编写我的应用程序时,我不知道准备好的语句,这是一个很大的问题。我错过了什么吗?

6 个答案:

答案 0 :(得分:5)

OWASP维护Top 10 Most Critical Web Application Security Risks的列表(警告,PDF下载)。这是从2010年开始,但我认为它仍然适用,现在也许更多。

注入和XSS是前两个,但你应该知道其他的8.如果你使用的是现有的CMS,其中许多可能已经被考虑过了,但CMS越受欢迎,你就越有可能遇到由于黑帽试图在其中找到漏洞而导致的漏洞。

如果您没有存储信用卡,订单历史记录,地址甚至是电子邮件等关键数据,那么只要您采取的方式,我就不会担心太多关于您的网站受到影响基本的预防措施(听起来像你一样)。

答案 1 :(得分:3)

如果您担心安全问题,那么好的资源就是OWASP - Top 10 Application Security Risks

答案 2 :(得分:2)

在Web应用程序(特别是PHP')中最重要的是 Data Validation 从用户那里获得的所有输入进一步保存在您的数据库中。

对于安全应用程序,所有事务都应在HTTPS上完成。对于安全的Cookie管理,应实施 Secure and HTTPOnly Cookie。

答案 3 :(得分:1)

我还没有提到更多的观点。其中大部分都与代码无关 - 我不确定你是否只希望得到与代码相关的内容,但无论如何我都会提到它们。

  • 备份(用户数据)。应该是不言而喻的
  • 版本控制。如果你有一个大错误,你想要访问以前的版本。
  • 审计跟踪,警报和日志记录。如果你遇到麻烦,你会怎么知道?你能跟踪发生了什么吗?如果你知道某些事情是错的但却不完全知道什么,你能够诊断出这个问题吗?
  • 主机。你在哪里托管?你有足够的带宽和监控吗?如果你得到DOS,会发生什么?你能阻止不必要的流量吗?
  • 缓存。如果需要,你能改变吗?

答案 4 :(得分:1)

总有一件事情要做。可用性:)安全性有三个方面:

  • 保密(没有人可以阅读他们无权访问的内容)
  • 诚信(没有人可以更改他们应该拥有的任何数据,您必须能够检测到它是否发生了这种情况)
  • 可用性(数据,应用程序必须提供的任何内容)

你几乎做得很好并且照顾了前两个(凭据,准备好的声明,htmlentities ......)但是没有一个能帮助对抗DoS攻击。您应该能够检测是否有人拍打您的站点并禁止攻击者ip从您的服务器。虽然这可以在PHP中完成(在php的第一行踢攻击者要比让他们初始化框架,数据库连接等更好),但它可以在较低层有效地完成(例如:nginx / apache, iptables,snort)。

然而,您所要求的通常是风险管理问题。在实际应用中,您无法为所有可能的攻击,边缘情况等做好准备。您需要做的是根据概率和影响对所有风险进行分类(http://www.jiscinfonet.ac.uk/InfoKits/infokit-related-files/Resources/Images/risk-matrix)。通过这种方式,您可以首先关注最重要(最高)的风险,并且可能完全忽略底部的下部。

答案 5 :(得分:0)

SQL Injection和XSS是最突出的Hacking方法。

如果您使用预准备语句,则可以使用SQL注入。

此外,如果htmlentities()在您显示HTML的任何地方,您应该是安全的。