python - “沙箱”用户定义的Python函数

标签 python

我希望允许用户定义自己的函数以在程序中使用,但是,我不希望他们破坏东西 - 理想情况下我想将其限制为核心语言函数,也许是 数学模块

自定义函数将是这样的(在 user_function.py 中定义,并导入到应用程序中)

def user_function(arg1, arg2, arg3):
    if arg1 < 2.0:
        return 5.0
    if arg2 > 3.0:
        return 2.0
    return arg3

我不希望他们能够做这样的事情(例如访问 API key 、修改外部变量、进行 os.system() 调用等):

def user_function(arg1, arg2, arg3):
    with open("program_dump.txt", "w") as f:
        di = dict(globals())
        di.update(locals())
        json.dump(di, f)
    return 2.0

有没有一种合理的方法来处理这个问题,而又不会引入巨大的漏洞空间?或者我最好的选择是想出一些伪标记语言并解析它?

最好兼容 python 2.7

最佳答案

更新:我发现了 RestrictedPython,并认为这是最好的方法 - 但欢迎任何其他建议

关于python - “沙箱”用户定义的Python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56979905/

相关文章:

python - 如何创建椭圆形几何体

python - Facebook发送API发送音频问题

python - 具有列表理解的不同模式

python - 如何将 django 连接到 docker redis 容器?

python - tkinter 中的帧不堆叠在一起

python - 如何根据前两个匹配列从多个大型文本文件的第三列中提取数据?

python - node2vec 支持负边权重吗?

python - Numpy 和 OpenCV

python - 为什么 Python 2.6 添加一个全局的 next() 函数?

python - pyvisa 给出错误,但 linux-gpib 工作