我正在构建一个系统,不同的用户可以上传他们的自定义 php 模块。该系统基于用 PHP 编写并部署在 Linux 上的自定义 MVC 框架。当用户登录时,他的模块将被系统核心加载。系统核心在所有模块之间共享。
我的问题是,如何限制 USER 模块不弄乱核心。例如。取消链接文件等。我可以通过文件权限阻止他们这样做吗?
我正在构建一个系统,不同的用户可以上传他们的自定义 php 模块。该系统基于用 PHP 编写并部署在 Linux 上的自定义 MVC 框架。当用户登录时,他的模块将被系统核心加载。系统核心在所有模块之间共享。
我的问题是,如何限制 USER 模块不弄乱核心。例如。取消链接文件等。我可以通过文件权限阻止他们这样做吗?
让用户上传脚本并执行这些脚本是非常危险的。即使您使用disable_function
、Suhosin和朋友来保护您的系统,您也可能会打开很大的安全漏洞。
与其让用户上传 PHP 脚本,我建议您允许他们上传由专用模板语言组成的模板。此类语言通常根本无法访问诸如取消链接文件之类的功能。然后您可以通过白名单打开模板语言,这是一种更安全的方法。
Zeta 组件模板引擎具有很强的可扩展性,并且模板对于 PHP 开发人员来说编写起来很直观。也许这是您的选择?
希望您系统的每个用户在您的服务器上都有不同的用户帐户。如果他们不这样做,那么要阻止他们删除彼此的数据将非常困难。
我假设您正在开发某种风格的 unix 服务器。
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
。