Java-如何沙箱ScriptEngineManager?

问题描述 投票:0回答:1

我可以使用内置的ScriptEngineManager轻松执行JavaScript。但是,它对JavaScript具有完全许可,这对我来说是个大问题。

它允许执行危险的命令,例如:

  • javax.swing.JOptionPane.showMessageDialog(null, "Hello, Server!");
  • java.lang.System.exit(0);

如何限制Javascript Engine中Java函数的可用性?

java security scriptengine
1个回答
1
投票

默认情况下,沙箱会阻止对所有Java类的访问。

NashornSandbox sandbox = NashornSandboxes.create();
sandbox.allow(File.class);  
sandbox.eval("var File = Java.type('java.io.File'); File;")

delight-nashorn-sandbox

© www.soinside.com 2019 - 2024. All rights reserved.