Java - 如何沙箱 ScriptEngineManager?

标签 java security scriptengine

我可以使用内置的 ScriptEngineManager 轻松执行 JavaScript。然而,它给了JavaScript完全权限,这对我来说是个大问题。

它允许危险命令,例如:

  • javax.swing.JOptionPane.showMessageDialog(null, "你好,服务器!");
  • java.lang.System.exit(0);

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

最佳答案

沙箱默认阻止对所有 Java 类的访问。

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

delight-nashorn-sandbox

关于Java - 如何沙箱 ScriptEngineManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997229/

相关文章:

java - protobuf 消息中的自引用字段

android - 在 Android 应用程序中,将来自 Google API 的 client_secret.json 存储在哪里?

java - 评估字符串时的错误答案

javax.script.ScriptEngine 控制台扩展或库?

java - android java不显示任何布局

java - EJB 3 静态引用还是运行时查找?

Java使用多个表迭代HQL结果

security - Exchange 2010 中间人攻击

javax.crypto.BadPaddingException : Data must start with zero