我不是python / jython专家,所以我可能缺少一些明显的东西->为此感到抱歉。
在我的应用中,我希望用户使用python
和JSR233运行jython
脚本:
ScriptEngine engine = scriptEngineManager.getEngineByName 'python'
CompiledScript action = ((Compilable)engine).compile script
action.eval()
...
def res = action.engine.invokeFunction 'action', arg1, arg2
该脚本是一个具有2个参数的函数,应该对集合执行原始操作,不能访问文件,不能访问Internet等。
因此,我想让用户import
非常基本的模块,例如re
或collections
,并禁止所有其他模块,包括可怕的eval()
或exec()
函数
在不阅读整个互联网的情况下实现沙箱的最简单方法是什么(我已经做了什么)?