我可以使用内置的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

09-10 03:59
查看更多