end*_*ini 4 java security jvm jar java-security
是否可以强制 JVM 检查类加载器上加载的每个 JAR 是否都已签名?
我期望的行为是:如果签名错误或jar文件未签名,则JVM崩溃,否则程序运行顺利。
这当然是可能的(毕竟,安全性是 Java 设计理念的核心),但通常 Java 会延迟处理此类问题,而不是在 JVM 启动时处理。
通常推荐的策略是安装一个安全管理器,它将阻止任何不受信任的代码(信任由与安全管理器关联的策略文件定义)访问操作系统或 JVM 的关键部分。然而,此类不受信任的代码仍然可以在 JVM 沙箱中运行,并且在不受信任的代码尝试冲出沙箱之前,您的应用程序不会崩溃。一般来说,这被视为一项功能。
如果您确实需要在运行时验证所有 Jars 是否都已签名,您可以检查类路径以获取正在加载的所有 Jars 并检查其内容以验证它们是否已签名。此答案提供了示例代码,详细说明了如何执行此操作。
然而,更好的做法是首先避免使用不受信任的代码启动 JVM,这就是应用程序jarsigner发挥作用的地方。在将任何 Jars 添加到类路径之前,请验证它们jarsigner,这样您就可以确信您的 JVM 只运行受信任的代码。一旦 JVM 启动,您的选择就更加有限,因此最好的做法是仅在您对安全策略或正在加载的类有信心时才启动 JVM。
| 归档时间: |
|
| 查看次数: |
2790 次 |
| 最近记录: |