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

标签 java security

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

  • 修改任何应用程序代码的用户代码。我们有一些单例,用户可以使用例如访问它。反射以获取一些实例并进行更改,例如一些关键配置;或更换一些 guard 代码。由于类加载器是我编写的,所以我可以防止加载任何关键类。

  • 用户代码应该只能访问一些文件夹;如果可能的话。所以它表现得像 unix 用户:)

最佳答案

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

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

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

关于java - 如何从用户代码中保护应用程序 Java 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992910/

相关文章:

Android 应用内结算 : Security. java 说 "Signature Verification Failed"

java - 逻辑错误或重新绘制/重新验证 Java JFrame

java - 使用 java 将文件中的每个引号替换为转义引号

c# - .Net 程序集安全 - 防止黑客攻击/逆向工程

spring - Grails可运行jar中的Spring Security重定向到HTTP

java - Spring Security 根据入参标准进行授权

java - 如何创建正则表达式来验证数字即使用连字符 (-) 分隔也不相同

java - (JAVA) 如何创建足球联赛积分榜的基本文本输入和输出?

java - Java从FTP服务器递归下载所有文件夹

javascript - 在 Firefox 和谷歌浏览器上复制到剪贴板