在开发我的一个应用程序期间,我想为用户提供更强大的过滤器。因此,我想为用户提供一个简单的脚本接口(interface)。脚本语言将是 Python。
出于明显的原因,我想收紧语言的范围以符合我的特定目的(我不希望用户接触服务器的 HDD 文件等)。我也不想自己写一个 Python 解释器(这将是重新发明轮子,而"new"轮子最终将是矩形的)。但是,我还没有为此找到任何合适的库或模块。
Groovy 的编译定制器和编译器配置方法正是我想要的,Python 是否存在类似的方法?
请您参考如下方法:
您正在寻找的是所谓的“沙盒”或“受限执行”。 This wiki page discusses some of the details .
简而言之,Python 极客和专家曾多次尝试在 Python 之上构建沙箱,但最终都以失败告终。
主要原因是 Python 提供了太多的路径来做一些事情,以至于沙箱要么不得不禁止常见的用例(使很多库和 Python 代码变得无用),要么沙箱中有漏洞会使这个概念变得无用。
因此,虽然这看起来是个不错且简单的想法,但到目前为止,还没有解决方案。 AFAIK,Python 中没有钩子(Hook)来调整字节码编译器来实现类似 Groovy Sandbox 的东西。 .
相关:
