在我们的应用中,应用程序使用自定义类加载器加载用户模块。什么是保护用户模块的野性行为的最佳方法?我们想要阻止:
修改任何应用程序代码的用户代码。我们有一些单身人士,用户可以使用例如反思得到一些实例并改变,例如一些关键配置;或者更换一些保护代码。由于类加载器是由我编写的,因此我可以阻止加载任何关键的类。
用户代码只能访问某些文件夹;如果可能的话。所以它的行为类似于unix用户:)
答案 0 :(得分:0)
第一步是设置SecurityManager
。这是因为Java类库包含全局状态。您还需要确保您的代码不使用其权限通过此状态公开自己。此外,某些全局状态未经过安全检查,例如通过“AppContext
”和当前线程。
通常package.access
安全属性用于隐藏父类加载器上下文中的内部代码。如果通过非子类加载器加载潜在的恶意代码,这不是一个坏主意。
注意,如果您传递隐藏代码的实例,恶意代码可以使用Object.getClass
,Class.getMethods
等来探索公共界面。检查Class.getClassLoader
,但确保没有其他出口,例如通过线程上下文类加载器(尽管Thread.getContextClassLoader
奇怪地有一个安全检查,它的用途是发布类加载器)。 / p>