【问题标题】:security problem with Java ScriptEngineJava ScriptEngine 的安全问题
【发布时间】:2010-12-25 02:01:13
【问题描述】:

我刚开始使用 Java ScriptEngine 对我的应用程序进行少量扩展,然后我注意到我可以导入脚本中的所有 java 类并不受限制地使用它们。有没有办法指定脚本可以使用哪些类?我不希望他们做java.lang.System.exit(1);之类的事情

【问题讨论】:

    标签: java scripting permissions sandbox


    【解决方案1】:

    好吧,您似乎需要了解 Java SecurityManager。这是一个相当大的主题,您可能需要阅读它,然后如果您无法使其适合您,请发布更具体的问题。

    【讨论】:

    • SecuritiyManager 听起来不错,我会看看。你对我从哪里开始讨论这个大话题有什么建议吗?
    【解决方案2】:

    使用 Java 安全管理器。参考this的答案示例。

    【讨论】:

      【解决方案3】:

      我通过将“importPackage = null”放在所有脚本的顶部解决了这个问题,它似乎有效,但我不确定是否可以避免这种黑客攻击。

      【讨论】:

      • 看起来这是限制所有 importPackage 调用的最简单方法
      • 在这种情况下,仍然可以这样做:java.lang.System.exit(1);。程序将退出。