【问题标题】:What advantages do PHP frameworks provide considering security perspective?考虑到安全性,PHP 框架提供了哪些优势?
【发布时间】:2011-05-30 12:02:23
【问题描述】:
有许多 PHP 框架可用于 PHP,即 -
Zend
CakePHP
CodeIgniter
-
Symfony
等等……
大多数框架都处理了哪些与安全相关的问题?
(据我所知,如果我们使用那里的方法,他们中的大多数人都会处理(跨站点脚本(XSS))漏洞。他们中的大多数人关注的其他问题是什么?)
除了在项目中使用框架,还有哪些其他安全问题需要注意?
编辑:就我而言,我使用的是 codeigniter 框架。
【问题讨论】:
标签:
security
codeigniter
frameworks
php
【解决方案1】:
[垃圾邮件]
不久前,我创建了一个小概览表:http://matrix.include-once.org/framework/,其中包括一些关于 Web 应用程序安全性基本基石的摘要:
- 数据库转义/或参数化 SQL(例如通过 ORM)
- 输入过滤/清理
- 输出编码
- 授权哈希函数(如果有)
- 前端和后台管理分离(未完成,大部分不适用)
如果我想概括一下,大型框架确实涵盖了很多内容。所以真正的问题变成了业务/处理层的逻辑疏忽。
【解决方案2】:
这是一个有点模糊的问题,因为它完全取决于你在谈论什么框架。
您列出的所有框架都使用某种数据库抽象层,无论是简单的查询构建器还是更大的 ActiveRecord/ORM 实现。这些数据库抽象层将在大多数情况下停止 SQL 注入。
CodeIgniter 提供了一个 Encrypt 类,它可以帮助您生成密码和随机字符串。在您的主配置文件中是一个特定于您的应用程序的“加密密钥”。这意味着您的应用程序将对另一个应用程序具有唯一的盐,因此如果有人获得您数据库的副本/访问权限,他们将无法计算出密码。
每个框架都有很多其他特定的安全功能,但这些都是基础。
【解决方案3】:
无论在确保 PHP 框架的安全性上投入了多少注意力和思考,现实情况是总有改进的余地,即使像 Codeigniter 这样的框架提供 XSS、输入过滤、请求验证、数据库抽象等好东西,总会有错误和问题。
永远不要仅仅依赖框架的内置安全保护方法。始终阅读框架如何做某事,了解逻辑,然后在发现某些内容不如应有的安全性时重写以满足您的需求。
但是,如上所述,我已经使用 Codeigniter 几个月了,并且在几个高端、高流量的网站上使用过,我不能说我遇到过任何安全问题或违规行为。就安全性而言,框架的一个真正优势在于,它们可能会保护您免受某种您从一开始就不知道存在的攻击(这是一个了不起的好处)。
阅读 Codeigniter 和其他框架如何解决安全问题并保护您的应用程序,您会发现它会增强您的开发知识,并在您编写需要严格安全性和高可靠性的大型应用程序时使您受益。