Я использую Nashorn с Java API 8. Я хотел бы защитить выполнение javascript, чтобы убедиться, что код не может вызывать пакет Java.
Можно следующим образом:
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine("-strict", "--no-java", "--no-syntax-extensions");
Однако использовать NashornScriptEngineFactory
напрямую не очень приятно.
Хороший способ - использовать ScriptEngineManager
. NashornScriptEngineFactory
— это фабрика, используемая ScriptEngineManager
для создания экземпляра ScriptEngine
. Это объясняется в этом документация :
Этот пакет обеспечивает интеграцию с javax.script, что является предпочтительным способом использования Nashorn. Обычно это делается для получения экземпляра скриптового движка Nashorn:
import javax.script.*; ... ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn");
Я не нашел решения для создания ScriptEngine
с использованием ScriptEngineManager
с возможностью указания дополнительных аргументов, таких как "-strict", "--no-java", "--no-syntax-extensions"
.
может ли кто-нибудь помочь мне в этом вопросе? Заранее спасибо.