2009-09-03 50 views
5

作为一名Web开发人员,我使用PHP,并且我知道我必须担心安全性,但是当您使用框架时,会有大量代码和设计在继续传递, t代码或设计,例如我使用CakePHP。php框架和安全

  • 所以在这种情况下,与框架我应该担心多少安全?

回答

9

你应该一直持续下去尊重安全的基本原则:

  • 不信任用户
  • 永远不要相信用户

这有点意思:

  • 筛选/验证所有涉及您应用程序的内容
  • 转义任何输出。


使用框架没有太大变化有关,不同之处在于:

  • 输出到数据库经常上课该构架的一些层,它应当处理往往逃脱
  • 框架提供过滤/验证解决方案;使用它们;-)
  • 框架通常有一些指导原则;阅读它们。


一点题外话:你说的这个:

有很多,代码和设计 您接力上,但你没有代码 或设计

考虑到您使用的是众所周知的框架,很多人都使用此代码可能比您可以编写的任何代码更多的测试/审查;-)

这实际上是开源的优势:你不是唯一一个负责代码的人,许多人的眼睛都看到了它 - 这意味着许多人的手都增强了它。

4

在处理应用程序中的安全性时,有很多事情需要考虑。正如帕斯卡尔所说,使用一个流行的框架让很多人看到它是个好主意。

我看到了一些关于CakePHP的关注领域。

第一个问题是最终用户。你应该期望有人在你制作的每一页上都做些愚蠢的事情。这些的一些例子是:

  • 一个人快速反复地点击提交按钮。如果你不小心,这可能会扭曲或混乱你的系统。解决方案不是基于框架,而是基于您的编码方法和测试。
  • SQL注入和其他不好的事情。页面上的任何字段都可能被滥用,因此每个表单元素都必须进行消毒。 CakePHP有简单的方法来处理这些安全问题。 http://book.cakephp.org/view/153/Data-Sanitization
  • 干净的URL是非常重要的。你不应该设计一个允许用户直接访问整数主键的系统。例如,如果您有一个拥有/ show_user/2098的网站,则只需输入show_user/2097即可查看其他人的帐户。 CakePHP允许你很容易地结合slug或UUID,以防止这种情况发生。

其次,您必须关心处理代码和权限本身的攻击。例如:

  • 切勿在代码中使用来自最终用户的数据中的eval()或system()。由于这个问题,过去有一些perl应用程序被劫持。
  • 文件夹结构和权限在安全性方面很重要。用户永远不能进入可写目录。通过CakePHP,文件夹结构的设计使您可以直接将apache指向app/webroot。这意味着tmp目录位于Apache路径之外,使系统更安全一些。

第三,您应该关心保护您的管理页面以及谁有权访问什么。

  • CakePHP具有一个Auth和一个Acl组件,允许您选择哪些用户可以访问哪些页面。这使得可以使用定制的Cake Sessions来存储在数据库中,通过使用PHP或写入文件系统。

我建议您阅读一些重要的组件,并确保您正确设置它们,以确保您构建的应用程序没有安全缺陷。在您进一步研究时,请看一下这些元素:http://book.cakephp.org/view/170/Core-Components