gpt4 book ai didi

java - 如何在 Java 中启用启用 SecurityManager 的情况下创建 newInstance

转载 作者:行者123 更新时间:2023-12-01 23:51:22 25 4
gpt4 key购买 nike

我需要创建从不受信任的类文件加载的类的新实例。现在我执行以下操作:

classLoader.loadClass(UNSTRUSTED_CLASS).newInstance()

问题是,如果我启用安全管理器,它不允许调用 newInstance,但如果我禁用安全管理器,则可以将恶意代码放入初始化 block 中,并且执行不会出现问题。

如何完成创建不可信类的新实例?

最佳答案

嗯,我用过的。只要我有自定义类加载器,它从特定位置加载不受信任的代码,我就可以在策略文件中为我的受信任代码定义代码库,我授予了使用反射的权限。因此,来自另一个代码库的不受信任的代码没有此权限。即

grant codeBase "file:/C:/path/to/trusted/code/classes" {
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};

使用此策略文件,从 codeBase 中指定的其他位置加载的所有代码都将不具有任何权限。

关于java - 如何在 Java 中启用启用 SecurityManager 的情况下创建 newInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042240/

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