【发布时间】:2013-06-27 00:21:38
【问题描述】:
我有一个使用 PHP 编写的带有 CodeIgniter 框架的网站。几年来,这项工作一直在进行中,我最终想将它开源。它目前运行大约 10k 行 PHP(不包括 CodeIgniter 库)。最近我很清楚,我不能继续使用 CodeIgniter。
它的主要问题是开发人员似乎要么不了解 XSS 和正确的转义,要么他们不在乎。即使是直接在属性中结束的函数的参数(例如,anchor())也不会被转义。生成表单输入的函数在是否转义方面不一致,并且文档对此主题保持沉默(我所能做的就是阅读源代码)。而“模板引擎”,即使可以这样称呼,也没有逃脱,这使得它基本上没用。每次我想输出一个链接时,我都厌倦了写<?=anchor(html_escape('foo/bar/' . rawurlencode($baz)), html_escape($baz))?>。它使代码丑陋得要命,我敢肯定我错过了一些地方。在某些情况下,输入被不恰当地“清理”并且这种行为不能被关闭;例如,如果用户在任何表单输入字段中输入包含%10 的字符串,则该子字符串会在应用程序看到它之前被删除。
我的代码依赖于许多 CodeIgniter 库,包括数据库(活动记录模式)、电子邮件、表单验证、分页和会话。
什么是另一个 PHP 框架:
- 基于MVC模式;
- 具有适当的模板引擎,并且不擅长转义;
- 从 CodeIgniter 过渡到相对容易(具有大多数相同的库)
?
【问题讨论】:
-
你为什么不做我所做的并扩展有问题的 CI 类,以便他们做你所做的?我不喜欢他们使用的整个黑名单 XSS 方法,所以我用我自己的 MY_Security.php 类扩展了核心安全类,并创建了一个白名单环境。对所有类都可以这样做,这样做相当简单,然后可以拖放到任何应用程序文件夹中以覆盖默认方法。
-
在我看来,这需要重写大部分 CI 库,如果我要这样做,那么我还不如只使用不同的框架。
标签: php codeigniter frameworks xss