zoukankan      html  css  js  c++  java
  • 3.10保护域

    当类装载器将类型装入Java虚拟机时,它们将为每个类型指派一个保护域。保护域定义了授 予一段特定代码的所有权限。(一个保护域对应策略文件中的一个或多个grant子句。)装载入Java虚拟机的每一个类型都属于一个且仅属于—个保护域。

    类装载器知道它装载的所有类或接口的代码库和签名者。它利用这些信息来创建一个 CodeSource对象。它将这个CodeSource对象传递给当前Policy对象的getpermissions ()方法, 得到这个抽象类java.security.PermissionCollection的子类实例。这个PermissionCollection包含了到所有Permission对象的引用(这些Permission对象由当前策略授予指定代码来源)。利用它创建 的CodeSource和它从Policy对象得到的PermissionCollection,它可以实例化一个新的 ProtectDomain对象。它通过将合适的ProtectionDomain对象传递给defineClass ()方法,来将这 段代码放到一个保护域中。defineClass ()方法是类ClassLoader的一个实例方法,用户自定义 类装载器调用它来将类型导入到java虚拟机中。将类型指派到保护域中是一个重要的工作,就像在本章前面提到的一样,它是类装载器体系结构支持Java沙箱安全模型的三个方法中的一个。

    虽然这个Policy对象代表了一个从代码来源到权限的全局映射,但是最终还是由类装载器负责决定代码执行时将获得什么样的权限。例如,一个类装载器可以完全忽略当前的策略,而随机地赋予权限。或者,一个类装载器可以向由Policy对象的getPermissions ()方法返回的权限 中再添加一些权限。例如,如果一个类型装载器要装载一个applet代码,除了由当前策略可能授予这段代码的权限以外,它还可以添加一个权限,使得它可以建立一个到这个applet的源主机的 socket连接。现在读者可以明白了,类装载器在装载类时起到了重要的安全作用。

  • 相关阅读:
    上网助手(集成ipv6)windows版
    c# 串口编程
    test blog
    用于主题检测的临时日志(d020b283408c4bc68872f97ee237b663 3bfe001a32de4114a6b44005b770f6d7)
    OpenGL概述 陌陌
    [转载][转帖]谈谈我对攻读计算机研究生的看法。。。大牛的文章,见解精深独到
    滚动值的兼容问题
    js小练习去掉指定的字符组成一句话输出
    马虎将classname加到了id属性中,造成报错
    锋利的jquery读书笔记(一)
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979243.html
Copyright © 2011-2022 走看看