2013-06-27 23 views
2

我有一个使用CodeIgniter框架以PHP编写的网站。几年来,这项工作一直在进行中,我最终希望开源。它目前运行到大约10K行PHP(不包括CodeIgniter库)。最近我清楚我无法继续使用CodeIgniter。出于安全考虑,我想迁移CodeIgniter

它的主要问题是,它似乎像开发人员不了解XSS和正确的转义,或他们不在乎。即使直接以属性结尾的函数的参数(例如,anchor())也不会被转义。生成表单输入的函数关于它们是否转义以及文档是否对此主题保持沉默(我所能做的只是阅读源代码)而不一致。而“模板引擎”,如果它甚至可以被称为,也不会逃脱,这使得它基本上无用。每当我想输出一个链接时,我都厌倦了写作<?=anchor(html_escape('foo/bar/' . rawurlencode($baz)), html_escape($baz))?>。它使得代码变得糟糕透顶,我确信我错过了一些地方。在某些情况下,投入不恰当地被“消毒”,并且这种行为不能被关闭;例如,如果用户在任何形式的输入字段中输入了包含%10的字符串,那么该子字符串在应用程序看到它之前被删除。我的代码依赖于许多CodeIgniter库,包括数据库(活动记录模式),电子邮件,表单验证,分页和会话。

什么是另一种PHP框架,其中:

  • 是基于MVC模式;
  • 有一个适当的模板引擎,不吸吮逃避的东西;
  • 是比较容易从笨过渡到(具有许多相同的库)

+1

你为什么不去做我所做的事情,并扩展有问题的CI类,以便他们做你所做的事情?我不喜欢他们使用的整个黑名单XSS方法,所以我用我自己的MY_Security.php类扩展了核心安全类,并改为使用白名单卫生。对于所有的类都可以做到这一点,这很简单,然后可以放到任何应用程序文件夹中以覆盖默认方法。 –

+1

在我看来,这将需要重写CI库的大部分,如果我要这样做,那么我可能只是使用不同的框架。 – Brian

回答

1

这里有大量的MVC框架。我自己亲自使用Symfony。这是一个你可以扩展的框架,不需要无用的库。其他要考虑的是LithiumLaravel

Symfony上的用户基础比其他的大,但它们都非常稳固。您可以使用框架的Composer以及第三方库进行扩展。

0

你可以看看CakePHP它是基于Rails原则,并且应该足够快而且足够重写你的应用程序而没有太多的麻烦。

无论如何,Zend Framework应该是一个很酷的选择。