PHP MVC沙盒

时间:2011-02-28 13:10:17

标签: php model-view-controller file-permissions sandbox chmod

我正在建立一个不同用户可以上传自定义php模块的系统。该系统基于用PHP编写并部署在Linux上的自定义MVC框架。 当用户登录时,他的模块将由系统核心加载。系统核心在所有模块之间共享。

我的问题是,如何限制USER模块搞乱核心。例如。取消链接文件,类似。我可以阻止他们使用文件权限吗?

3 个答案:

答案 0 :(得分:4)

提升用户上传脚本并执行这些操作非常危险。即使您使用disable_functionSuhosin和朋友保护系统,也可能会打开大量安全漏洞。

我建议您不要让用户上传PHP脚本,而是允许他们上传模板,模板由专用的模板语言组成。这些语言通常无法访问诸如取消链接文件之类的功能。然后,您可以通过白名单打开模板语言,这是一种更安全的方法。

Zeta Componets Template engine非常易于扩展,并且可以直观地为PHP开发人员编写模板。也许这是你的选择?

答案 1 :(得分:0)

希望您系统的每个用户在您的服务器上都有不同的用户帐户。如果他们不这样做,那么要防止他们删除其他数据将非常困难。

我假设你正在开发一些unix服务器。

  • 创建一个拥有MVC系统核心的用户。这是管理员用户。我会称这个用户为mvc-admin
  • 创建一个允许访问系统核心的组。我将在此回答中将此组称为g-mvc-access
  • chown -R mvc-admin:g-mvc-access /path/to/mvc-system-root。现在这些文件全部由admin用户和访问组
  • 拥有
  • chmod -R g+r-w /path/to/mvc-system-root。现在,该组可以读取但不能写入MVC系统根目录下的所有文件。
  • 将您的所有用户帐户添加到论坛g-mvc-access

答案 2 :(得分:-1)

您可以将脚本上传到运行“安全”php的第二台服务器。

然后只需通过 disable_functions 指令禁用危险功能:

http://www.webhostgear.com/319.html