Я хотел бы предложить нашим пользователям возможность писать сценарии на стороне сервера.(Наше приложение ориентировано на разработчиков).Я бы хотел, чтобы они могли вызывать несколько функций в нашем приложении, создавать переменные и выполнять основные циклы и переходы.Однако я хочу, чтобы их сценарии были помещены в «песочницу», чтобы они не могли разорваться и записать на диск или открыть сетевое соединение или испортить внутреннюю часть нашего приложения.Думайте об этом как о хранимой процедуре SQL: вы можете взаимодействовать с сервером, но не с внешним миром.
Существуют ли какие-либо предварительно созданные языки сценариев для JVM, которые будут это делать?Я мог бы написать свой собственный DSL, но это большая работа.
Несколько лет назад я начал что-то подобное, используя Rhino, но оказалось, что я не могу правильно поставить его в песочницу.Был бы счастлив использовать GraalJS, но я не могу сказать, если это песочница.Существует некоторая ссылка на остановку вредоносного кода (https://www.graalvm.org/docs/graalvm-as-a-platform/embed/#reliable-timeouts-for-malicious-code),, но похоже, что JS-скрипт может по-прежнему получать доступ ко всем видам вещей в хост-приложении.