2

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

我的问题是,如何限制 USER 模块不弄乱核心。例如。取消链接文件等。我可以通过文件权限阻止他们这样做吗?

4

3 回答 3

4

让用户上传脚本并执行这些脚本是非常危险的。即使您使用disable_functionSuhosin和朋友来保护您的系统,您也可能会打开很大的安全漏洞。

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

Zeta 组件模板引擎具有很强的可扩展性,并且模板对于 PHP 开发人员来说编写起来很直观。也许这是您的选择?

于 2011-02-28T13:32:46.593 回答
0

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

我假设您正在开发某种风格的 unix 服务器。

  • 创建一个拥有 MVC 系统核心的用户。这是管理员用户。我会打电话给这个用户mvc-admin
  • 创建一个允许访问系统核心的组。我会g-mvc-access在这个答案中打电话给这个小组。
  • chown -R mvc-admin:g-mvc-access /path/to/mvc-system-root。现在文件都归管理员用户所有,并且在访问组中
  • chmod -R g+r-w /path/to/mvc-system-root。现在该组可以读取但不能写入 MVC 系统根目录下的所有文件。
  • 将所有用户帐户添加到组g-mvc-access
于 2011-02-28T14:49:53.120 回答
-1

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

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

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

于 2011-02-28T13:16:24.977 回答