我正在进行一个思考实验,根据其他问题来判断,毕竟不是那么新颖,但我想我会继续。我希望通过将用户提供的服务器端脚本限制为虚拟文件系统并设置根目录,并将某些虚拟目录进一步映射到特定的物理目录,这与实际的目录结构不一致。例如(使用PHP字符串解析),我的偏见是“〜$ user/...”,但语义较少的“/ $ user/...”也可以正常工作;可能会映射到“users/$ user/$ script_name/data/...”。是的,在某些情况下,多个用户可能会受到脚本的影响。是否有任何可与PHP/Python /其他集成的沙盒脚本引擎?
由于这是一个思想实验,因此我不考虑实现语言的问题,我期望在我的本地主机上执行它,宁愿使用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或更不可能的单声道,但我对这个想法并不热心。 (我在Java上非常生疏,几乎没有使用它在服务器端,单声道对我来说是完全陌生的。)
因为它们是迄今为止最有希望的选项,所以我也想知道沙盒设施在Java和Mono。例如,他们可以做虚拟文件系统吗?从Java用户代码输入API到引擎中?是否有任何标准API提供给脚本,如果可以的话,它们可以被删除?
澄清 我真的不关心这个去哪个方向,但我其实期望的Java /单声道是实现平台,而不是沙盒一个,基于问题&答案我联系。我有点惊讶,看到翻转的答案,但任何一种方式的作品。
[PHP(pecl)](http://pecl.php.net/package/spidermonkey)和[Python]有一个spidermonkey扩展(http://pypi.python.org/pypi/python-蜘蛛猴);不知道他们提供多少禁闭。 – mario 2011-03-06 21:31:53
我知道我看过PHP,不知道为什么我没有检查PECL。谢谢!我想我必须破解他们才能让他们做我想做的事,但至少这是事情。 (你可能想做出这个答案而不仅仅是一个评论。) – Grault 2011-03-08 16:31:33
http://niemeyer.net/lunatic-python – 2011-03-08 22:15:52