running_snail_ 2023-09-22 12:16 采纳率: 0%
浏览 4

jvm sandbox为什么sandbox-spy.jar要放在bootstrapClassLoader加载

有使用jvm sandbox的吗?
想请问一下为什么sandbox-spy.jar要放在bootstrapClassLoader加载,而不是放在systemClassloader加载呢? 如果按照双亲委派的原则,放在systemClassLoder中加载不也可以从沙盒和目标类之间查找到吗?我有点不理解,哪位可以解释一下呢?

https://github.com/alibaba/jvm-sandbox

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-22 12:26
    关注

    引用 皆我百晓生 小程序回复内容作答:
    JVM Sandboxing是一种在Java虚拟机中实现代码隔离和访问控制的机制。在这种机制中,sandbox-spy.jar被设计为被放置在bootstrap ClassLoader中加载的原因是为了增强沙盒功能并防止安全漏洞。

    当一个类被加载时,JVM会按照双亲委派模型从上到下逐级加载类。bootstrap ClassLoader是JVM默认的最顶层类加载器,负责加载核心Java类库,这些类库通常被信任并且经过仔细审查,被认为是安全的。相比之下,system ClassLoader则负责加载用户代码,并且不具备相同的信任级别。

    将sandbox-spy.jar放置在bootstrap ClassLoader中,可以确保其代码在最高的安全级别下执行。这样做的目的是为了防止沙盒中的恶意代码通过加载到system ClassLoader中所加载的类,绕过沙盒的安全控制。

    通过这种安排,sandbox-spy.jar能够拥有更高的权限并与JVM的核心类库进行交互,实现对JVM内部的监控和管理。如果它被加载到system ClassLoader中,它将具备与普通用户代码相同的访问权限,这可能导致无法控制或监视沙盒内发生的事情,从而降低了沙盒的安全性。

    总之,将sandbox-spy.jar放置在bootstrap ClassLoader中是为了增强JVM Sandboxing的安全性,并有效地保护沙盒功能。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月22日