gpt4 book ai didi

java - SecureClassLoader 的目的是什么?

转载 作者:行者123 更新时间:2023-11-29 07:30:57 25 4
gpt4 key购买 nike

我正在探索 Java 类加载器然后我遇到了 SecureClassLoader .

在查看了它的源代码并阅读了一些文章之后,我意识到我无法理解它的安全特性和使用范围。

谁能解释一下 SecureClassLoader 是什么?是用来做什么的?

为什么它是“安全的”?

谢谢。

最佳答案

Java 安全模型基于具有特定权限的类。

当某些方法尝试执行特权操作(例如,打开文件系统上的文件或打开网络套接字)时,将检查调用堆栈中的每个类以确定它是否具有适当的权限。

通过以下两种方式之一向类授予权限:

  1. 静态地,当类被定义时。
  2. 动态地,基于当前的安全策略(但前提是类被定义为具有动态策略)。

在这两种情况下,权限都是通过传递给 ClassLoader.defineClass 的 ProtectionDomain 授予的。 ProtectionDomain 有两部分:静态授予类的权限,以及“代码源”(加载类的位置,通常是 JAR 或目录)或“代码签名者”(保证类来自具体来源)。如果类加载器创建保护域,代码源(或签名者)将与当前安全策略动态匹配以确定是否应授予其他权限(例如,“从此特定 JAR 加载的类可以从该特定目录读取文件”)允许动态安全策略。

SecureClassLoader 有一个实用的 defineClass 方法,它接受一个 CodeSource,它为每个 CodeSource 维护一个延迟创建的 ProtectionDomain 的缓存(如果你想定义静态权限,允许你的子类覆盖 getPermissions)所以你的 ClassLoader 只需要记住 CodeSource而不是 ProtectionDomain。实际上,大多数 ClassLoader 实现都有一个预定义的类路径,因此它们可以轻松地自己创建和存储 ProtectionDomain,因此类本身并不是特别有用。

关于java - SecureClassLoader 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42720149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com