gpt4 book ai didi

javascript - 使用 Java 安全管理器禁止脚本访问特定 Java 类

转载 作者:行者123 更新时间:2023-12-03 05:20:07 24 4
gpt4 key购买 nike

我已经在使用 Java 8,它是 Nashorn JavaScript 引擎。在我的应用程序中,我出于各种目的从 Java 类访问 javaScript 脚本文件。然而,也可以从 javaScript 代码访问 Java 类。但由于我的应用程序中的 JavaScript 也可以由第三方编写,我想限制它们(JS 脚本)访问 Java 模块。 (特别禁止某些Java类)

我不想限制对Java类的所有访问,只是想寻找一种方法来限制或禁止某些特定的java类。

Nashorn中,我们可以通过使用ClassFilters(覆盖“exposeToScripts()”方法)来做到这一点,如下所示。

class MyCF implements ClassFilter {
@Override
public boolean exposeToScripts(String s) {
if (s.compareTo("myPackage.MyClass") == 0) return false;
return true;
}
}

但是我们如何使用Java安全管理器来做同样的事情,或者使用ClassFilter(上面提到的)的方式足以捕获和限制所有不需要的Java类访问。

最佳答案

ClassFilter 不能替代安全管理器! ClassFilter JEP 页面 -> http://openjdk.java.net/jeps/202在非目标部分明确了这一点:

/[这不​​会]使安全管理器对于脚本来说是多余的。在评估来自不受信任来源的脚本之前,嵌入应用程序仍应打开安全管理。仅靠类过滤并不能提供完整的脚本“沙箱”。/

ClassFilter 是对安全管理器的更精细的控制。例如,您可以通过阻止访问 java.lang.Thread 类[及其按名称命名的子类]来避免从脚本创建线程。

关于javascript - 使用 Java 安全管理器禁止脚本访问特定 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com