我可以使用内置的ScriptEngineManager
轻松执行JavaScript。但是,它对JavaScript具有完全许可,这对我来说是个大问题。
它允许执行危险的命令,例如:javax.swing.JOptionPane.showMessageDialog(null, "Hello, Server!");
java.lang.System.exit(0);
如何限制Javascript Engine中Java函数的可用性?
最佳答案
默认情况下,沙箱会阻止对所有Java类的访问。
NashornSandbox sandbox = NashornSandboxes.create();
sandbox.allow(File.class);
sandbox.eval("var File = Java.type('java.io.File'); File;")
delight-nashorn-sandbox