Я не эксперт по Python / Jython, поэтому я могу упустить некоторые очевидные вещи -> извините за это.
В моем приложении я хочу, чтобы пользователи запускались (среди прочих) python
сценарии, использующие jython
и JSR233:
ScriptEngine engine = scriptEngineManager.getEngineByName 'python'
CompiledScript action = ((Compilable)engine).compile script
action.eval()
...
def res = action.engine.invokeFunction 'action', arg1, arg2
Этот сценарий является функцией с 2 аргументами и должен выполнять примитивные операции с коллекциями, без доступа к файлам, без доступа к Интернету и т. д.
Следовательно, яхочу разрешить пользователям import
самые базовые модули, такие как re
или collections
, и запретить все остальные, включая страшные eval()
или exec()
функции.
Какой самый простой способ добиться песочницыне читая весь интернет (что я уже сделал)?