- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在探索 Java 类加载器然后我遇到了 SecureClassLoader
.
在查看了它的源代码并阅读了一些文章之后,我意识到我无法理解它的安全特性和使用范围。
谁能解释一下 SecureClassLoader
是什么?是用来做什么的?
为什么它是“安全的”?
谢谢。
最佳答案
Java 安全模型基于具有特定权限的类。
当某些方法尝试执行特权操作(例如,打开文件系统上的文件或打开网络套接字)时,将检查调用堆栈中的每个类以确定它是否具有适当的权限。
通过以下两种方式之一向类授予权限:
在这两种情况下,权限都是通过传递给 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/
我正在探索 Java 类加载器然后我遇到了 SecureClassLoader . 在查看了它的源代码并阅读了一些文章之后,我意识到我无法理解它的安全特性和使用范围。 谁能解释一下 SecureCla
我想编写自己的类加载器。作为 Applet 的默认类加载器,它应该更快、更动态。 但我不知道应该如何实现该方法: PermissionCollection getPermissions( CodeSo
我正在将基于 applet 的应用程序迁移到 Web Start 应用程序。 在应用程序中,需要一个自定义类加载器,以便从不同媒体获取资源和类。它还在顶部使用 JavaFX 层。 所有权限均授予 We
我是一名优秀的程序员,十分优秀!