网站和其他网络服务(例如Google App Engine或WordPress等)如何安全地允许用户上传他们想要的任何代码而不会定期损坏用户代码?我正在开发一个项目,它基本上使用Python中更复杂的'Eval()'实现来执行用户上传的代码。我正在考虑安全地做这件事,而不是托管代码,而是让开发人员托管代码,我可以像api一样访问它?或者可能必须全部批准(就像他们在应用程序商店上做的那样)。
无论如何,只是改写一下,我如何安全地托管和执行用户上传的代码?
答案 0 :(得分:0)
Pythoninteråreter过去曾将沙盒作为功能目标。然而,它对Python来说效果不佳。
剩下的东西是RestrictedPython(在那里的Plone网站上部署):
http://pypi.python.org/pypi/RestrictedPython
它基本上是一个eval(),可以在执行之前修改Python AST。适用于少数行脚本,对实际应用程序开发无用。
但是,如果我是你,我不会尝试在VM级别创建沙盒。相反,我会创建jailed / chrooted UNIX进程,它们对所有内容(磁盘,网络等)具有只读访问权限,并且执行时间过长会导致终止。这几乎就是App Engine的做法。