这是我思考了一段时间的事情。
我正在创建一个应用程序,我的用户将在其中上传他们自己的自定义主题,这意味着对于任何具有基本 PHP/XSS/任何技能的人来说,这将是一个很好的机会来引起很多麻烦。
我想在一种沙盒、封闭的环境中运行任何上传的文件,该环境只能访问我想要的内容(变量),而不能访问其他内容。
这是一个好的做法吗?将如何完成?
为了安全地允许任意 html/javascript,每个用户必须有自己的子域。如果每个用户都有自己的子域,那么用户的 JavaScript 将被限制在自己的沙箱中,因为同源政策 http://code.google.com/p/browsersec/wiki/Part2。如果您只想允许“安全 html”,那么html净化器 http://htmlpurifier.org/是一个选项,然后您可以使用 1 个域。
允许自定义 PHP 有点危险。 “共享托管”提供商依赖suPHP http://www.suphp.org/Home.html这会强制 php 脚本以特定用户身份运行。这将要求每个用户在您的系统上拥有自己的帐户。这种防御方法已经存在一段时间了。它并不完美,但它确实有效。
自定义主题的另一个可能的解决方案是使用模板引擎,它可以防止模板获得对 PHP 的完全访问权限。一些流行的框架:
-
smarty http://www.smarty.net/,它没有最好的安全记录,但您保持最新状态可能不会有问题。它需要是配置为禁止本机 php http://devzone.zend.com/article/1257#Heading7.
-
twig http://twig.sensiolabs.org/是 Symfony 框架制造商推出的一个相对较新的引擎。这意味着它拥有良好的开发者基础,并且由于它随 Symfony 一起提供,因此它也经过了实际测试。 Twig 不允许调用任何 PHP 函数,除非您专门为它们创建一个 twig 函数/过滤器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)