如何从用户代码中保护应用程序Java代码?

时间:2015-03-11 17:05:25

标签: java security

在我们的应用中,应用程序使用自定义类加载器加载用户模块。什么是保护用户模块的野性行为的最佳方法?我们想要阻止:

  • 修改任何应用程序代码的用户代码。我们有一些单身人士,用户可以使用例如反思得到一些实例并改变,例如一些关键配置;或者更换一些保护代码。由于类加载器是由我编写的,因此我可以阻止加载任何关键的类。

  • 用户代码只能访问某些文件夹;如果可能的话。所以它的行为类似于unix用户:)

1 个答案:

答案 0 :(得分:0)

第一步是设置SecurityManager。这是因为Java类库包含全局状态。您还需要确保您的代码不使用其权限通过此状态公开自己。此外,某些全局状态未经​​过安全检查,例如通过“AppContext”和当前线程。

通常package.access安全属性用于隐藏父类加载器上下文中的内部代码。如果通过非子类加载器加载潜在的恶意代码,这不是一个坏主意。

注意,如果您传递隐藏代码的实例,恶意代码可以使用Object.getClassClass.getMethods等来探索公共界面。检查Class.getClassLoader,但确保没有其他出口,例如通过线程上下文类加载器(尽管Thread.getContextClassLoader奇怪地有一个安全检查,它的用途是发布类加载器)。 / p>