【发布时间】:2011-03-09 06:08:39
【问题描述】:
我正在做一个思想实验,从其他问题来看,它毕竟不是那么新颖,但我想我还是会继续。我想通过将用户提供的服务器端脚本沙箱化,除其他外,将其限制在虚拟文件系统并设置根目录,并进一步将某些虚拟目录映射到特定的物理目录,这与实际目录结构不一致。例如(使用 PHP 字符串解析),我的先入之见是“~$user/...”,但语义较少的“/$user/...”也可以正常工作;要么映射到“users/$user/$script_name/data/...”。是的,在某些情况下,脚本可能会影响多个用户。
由于这是一个思想实验,因此我不认为实现语言是一个问题,我希望在我的本地主机上执行此操作,并且宁愿使用 PHP 而不是安装其他东西。 (我也有 Python 2 可用,并且可以让 mod_wsgi 来使用它。如果必须的话,我会安装 Python 3。)理想情况下,我希望 PEAR 模块能做到这一点 - 但据我所知,没有一个。
我尝试并未能找到可以完成此任务的服务器模块,例如 SSJS。我找到的最接近答案的是 Looking for a locked down script interpreter >> 和 Allowing users to script inline, what inline scripting engines are there for either .net or java? >>。如果绝对必要的话,我会转向 Java,或者不太可能转向 Mono,但我对这个想法并不热衷。 (我对 Java 非常生疏,几乎没有在服务器端使用过它。Mono 对我来说完全陌生。)
由于它们是迄今为止最有前途的选择,我还想知道 Java 和 Mono 中的沙盒工具有多广泛。例如,他们可以做虚拟文件系统吗?将来自 Java 用户代码的 API 输入引擎?是否为脚本提供了任何标准 API,如果有,是否可以将其删除?
澄清 我真的不在乎这是哪条路,但根据我链接的问题和答案,我实际上希望 Java/Mono 成为实现平台,而不是沙盒平台。看到答案出现反转,我有点惊讶,但无论哪种方式都有效。
【问题讨论】:
-
PHP (pecl) 和 Python 有一个蜘蛛猴扩展;不确定他们提供了多少限制。
-
我知道我看过 PHP 的,不知道为什么我没有检查 PECL。谢谢!我想我必须破解他们才能让他们做我想做的事,但至少这是这样的。 (您可能希望将其作为答案,而不仅仅是评论。)
标签: java php python mono security