【发布时间】:2009-06-06 00:38:08
【问题描述】:
我们有一个供应商提供的 Jar,其中包含一个我们希望通过 AOP 扩展和/或修改的类。默认的 Sun JVM 安全模型不允许未签名或由其他人签名的代码扩展已签名 jar 中的类。我们可以轻松地从 jar 文件中删除签名,但我更愿意将 JVM 配置为忽略 jar 签名安全措施。这可以做到吗?请注意,我们处于一个非常受控的环境中,因此我们相对不关心将恶意代码插入供应商提供的 jar 中。
【问题讨论】:
我们有一个供应商提供的 Jar,其中包含一个我们希望通过 AOP 扩展和/或修改的类。默认的 Sun JVM 安全模型不允许未签名或由其他人签名的代码扩展已签名 jar 中的类。我们可以轻松地从 jar 文件中删除签名,但我更愿意将 JVM 配置为忽略 jar 签名安全措施。这可以做到吗?请注意,我们处于一个非常受控的环境中,因此我们相对不关心将恶意代码插入供应商提供的 jar 中。
【问题讨论】:
我不确定这是否适用于您的情况,但可能。编写你自己的 Classloader,但不是基于 URLClassLoader,只是扩展 Classloader 并以你自己的方式解析你的类。
用这个类加载器加载你的类并应用你的 AOP 魔法,我可能会说它应该可以工作。
我所做的是实现一个基于插件的框架,我不想签署每一段代码(库/插件),只签署启动库(加载应用程序的库)。当然,您在类加载器中运行的代码必须是可信任的,因为您绕过了一些默认的安全约束。
【讨论】: