php框架和安全性

时间:2009-09-03 10:22:27

标签: php security cakephp frameworks

作为一名Web开发人员,我使用的是PHP,我知道我必须担心安全性,但是当你使用框架时,你会继续使用很多代码和设计,但是你没有代码或设计例如我正在使用CakePHP。

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

3 个答案:

答案 0 :(得分:9)

您应该始终遵守安全的基本原则:

  • 不信任用户
  • 从不信任用户

哪种意思是:

  • 过滤/验证应用程序的所有内容
  • 逃避任何输出。


使用框架并没有太大改变,除了:

  • 输出到数据库通常是框架的某个层,应该处理转义
  • 框架通常提供过滤/验证解决方案;使用它们; - )
  • 框架通常有一些指导方针;读它们。


作为旁注:你这样说:

  

有很多代码和设计   你转发,但你没有编码   或设计

考虑到您使用的是许多人使用的众所周知的框架,这段代码可能比您编写的任何代码都经过了更多测试/审核; - )

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

答案 1 :(得分:4)

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

我看到了与CakePHP有关的几个方面。

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

  • 一个人一遍又一遍地快速点击提交按钮。如果您不小心,可能会以某种方式扭曲或弄乱您的系统。解决方案不是基于框架,而是基于编码方法和测试。
  • SQL注入和其他不好的事情。页面上的任何字段都可能被滥用,因此必须清理每个表单元素。 CakePHP有简单的方法来处理这些安全问题。 http://book.cakephp.org/view/153/Data-Sanitization
  • 清洁网址非常重要。您永远不应该设计一个允许用户直接访问整数主键的系统。例如,如果您的网站有/ show_user / 2098,那么有人可以直接输入show_user / 2097查看其他人的帐户。 CakePHP允许您非常轻松地合并slu U或UUID,以防止这种情况发生。

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

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

第三,您应该关注管理页面的保护以及谁有权访问哪些内容。

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

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

答案 2 :(得分:0)

我建议您查看ESAPI:http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=PHP

它本身不是一个框架,但确实包含了许多Pascal提到的问题的工具。