在开发我的一个应用程序期间,我已经到了一个点,我想给用户一个更强大的过滤器。因此,我想为用户提供一个简单的脚本界面。脚本语言是Python。
出于显而易见的原因,我想收紧语言的范围以符合我的特定目的(我不希望用户触摸服务器的HDD文件等)。我也不想自己写一个Python解释器(这将重新发明轮子,而“新”轮子最终将是矩形)。但是,我没有找到任何合适的库或模块用于此目的。
Groovy的编译定制器和编译器配置方法正是我想要的,对Python有类似的东西吗?
答案 0 :(得分:1)
您正在寻找的内容称为"沙盒"或者"限制执行。" This wiki page discusses some of the details
简而言之,Python极客和专家们已经做了一些努力在Python之上构建一个沙箱,但最终都失败了。
主要原因是Python提供了许多路径来执行某些事情,沙箱要么禁止常见用例(渲染很多库和Python代码无用),要么沙箱中必须有漏洞会使这个概念变得毫无用处。
因此,虽然它看起来像一个好的和简单的想法,到目前为止,没有解决方案。 AFAIK,Python中没有钩子来调整字节码编译器来实现像Groovy Sandbox这样的东西。
相关: