在Kivy中编辑和执行用户输入的python代码-如何沙箱



在Kivy应用程序中,我希望能够使用Kivy中的多行文本框,用户可以在其中键入/编辑python代码。

在用户操作后,我希望能够运行该代码,以获得具有已知名称的函数的返回值。当然,在这样做的时候,代码必须经过沙盒处理,以防止用户访问与应用程序或运行该应用程序的设备相关的任何其他内容

有推荐的方法吗?我遇到过Restricted Python,我想知道这对于Kivy应用程序来说是否足够,或者是否有其他方法可能更适合它。

由于您已经找到了Restricted Python(仅适用于Python 2.7),您可能已经了解了exec,并且不允许访问Python中exec和eval内部的文件系统(这表明真正的沙盒Python是不可能的——您可以使其具有挑战性或有助于防止错误,但无法防止危害)。RestrictedPython似乎不支持Python3.x,所以你应该通过给开发者发电子邮件来了解它是否仍在维护,因为kivy最终会降低2.7。根据您想要允许的内容,ast.literal_eval可能足够了,但它只允许访问非常有限的python子集,我怀疑它是否有用,如果您的kivy应用程序是一个数学应用程序,用户可以在其中输入算术表达式,但除此之外,可能还不够。

最新更新