强安全性的好用PHP框架

12

我正在尝试选择一个提供非常好的Web应用程序安全性保护的框架,尽可能保护所有OWASP前十名漏洞:

  • SQL注入
  • XSS攻击
  • 跨站请求伪造(CSRF)
  • 身份验证
  • 授权
  • 等等

问题在于我已经做了大量研究:

Cakephp、Zend、Yii、Code Igniter、Kohana都有基本的身份验证,也许有一点授权,但对于任何需要可靠代码安全性的应用程序来说,都没有什么东西。

这是我第一次使用框架,之前一直在使用自定义的PHP Web应用程序。我对PHP框架的想法是,考虑到它并不是原生支持,为什么要使用它?除非这些框架中有一个比上面列出的更适合强大的Web应用程序安全性?谢谢。


1
最终,确保应用程序的安全取决于您自己。实际上,并不存在所谓的自动安全。 - Wesley Murch
Codeigniter内置了注入(Injection)、跨站点脚本(XSS)和跨站点请求伪造(CSRF)。身份验证(Authentication)和授权(Authorization)是应用程序特定的,因此编写一个库来覆盖它们几乎是没有意义的,不是吗? - Rick Calder
我知道这不是自动的,但有一个框架来支持... - CodeTalk
2
我认为你可能对框架的要求过高了。所有这些框架都有工具,使得保护系统免受这些问题的影响更加容易。SQL注入保护已经内置在它们提供的数据库抽象层中。使用它们提供的表单和请求对象可以更好地保护XSS和CSRF。身份验证和授权往往被故意留得比较宽泛,因为它们通常非常特定于一个应用程序。 - Joshua Kaiser
@RickCalder 不会的。得了吧,这已经过去很多年了,Codeigniter 的人还在重复那个谎言吗?试试其他任何框架,你就会发现你可以直接使用身份验证和授权功能。 - ChocoDeveloper
3个回答

12

安全性不能像一些饰面一样应用于应用程序。每种安全问题都要以不同的方式处理,大多数PHP框架提供编写安全代码的工具:

  • 打击HTML注入/XSS需要使用模板引擎(如Twig),该引擎默认情况下会转义值,或者使用组件驱动的方法来显示HTML。如果允许用户上传文件并从您自己的域中提供服务(您必须使用单独的域),则没有任何框架可以帮助您;

  • 您可以通过使用转义查询参数的数据库助手来避免SQL注入。您提到的每个框架都提供了这些功能(当然也可以使用纯PDO);

  • 您可以通过使用与会话绑定的令牌来对抗CSRF。每个框架都提供一些解决方案。但是,在每种情况下,您都必须以某种方式协助框架(通过向每个表单添加一个令牌或使用框架提供的表单抽象)。

所以在某种程度上——是的,您必须考虑安全性。我认为除非出现一种主要的范式转换,让我们通过在屏幕上拖动彩色框来设计应用程序,不会有任何PHP框架可以做更多的事情了,而不触及像HTML或SQL这样的不安全且复杂的东西。您期望什么样的支持呢?


这里有很棒的评论和值得思考的内容,fdreger!谢谢! - CodeTalk

9
我建议尝试使用CodeIgniter。 此外,如果您是第一次使用框架,并且CodeIgniter的用户指南非常易于理解,那么CodeIgniter很容易使用。 编辑:由于我仍然在2019年得到赞同,请查看https://laravel.com/

如果我早些看到你的答案,我会给它打勾 :) 我想我会选择使用CodeIgniter :) - CodeTalk

1
你提到的关键漏洞发生在不同的层面,有时候甚至是多个层面,并且往往取决于你所做的事情的上下文,因此很多框架都提供了保护措施来防范这些问题,但你必须要使用它。
例如,Symfony(1.x和2)和Zend Framework都有一个表单组件/子框架,可以直接实现CSRF。但这并不意味着默认情况下就已经启用了(Symfony的已经启用了...我不记得zf的是否已经启用)。同样,在视图层中,当我们谈论输出转义方面的XSS时也是如此。
现在,当涉及到大型应用程序的框架首选时,我个人喜欢Symfony 1.x和Symfony2,Zend Framework 1.x(不会提到zf2,因为我还没有尝试过)。对于简单的事情,我喜欢基于Symfony组件的Silex。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接