Jython: как ограничить доступ к eval ()? - PullRequest
0 голосов
/ 05 апреля 2019

Я не эксперт по 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() функции.

Какой самый простой способ добиться песочницыне читая весь интернет (что я уже сделал)?

...