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