zoukankan      html  css  js  c++  java
  • Java杂谈6——Java安全模型

      Java语言安全模型是其有别于传统的编程语言的一个很重要的特点,采用一种沙箱模型隔离了Java的运行环境与具体的操作系统,使得Java在网络环境下能够更为安全的运行。理解Java的安全模型,能够帮助我们站在更高的层面理解Java的底层实现,在适当的时机及时找出问题所在。

    沙箱模型的建立主要涉及了Java语言相关的以下几个部分:

    • 类加载器;

        运行时包:指由同一个类加载器装载的、属于同一个包的、多类型的集合。任意两个Java类包访问权限适用的前提是:属于同一个包,还必须是属于同一个运行时包。这样规定的动机之一就是防止一个由用户自定义类加载器装载的Java类非法获取到Java核心API的包访问权限。

             例如:通过动态类加载一个名为Java.lang.Virus的Java类能够被装载到内存,由于这个类是属于包Java.lang。如果不加以限制,这个外部的类就会拥有包内其他类的包访问权限。

             双亲托管模型:保证基本Java类库不会被恶意代码任意覆盖,具体的内容可以参考我之前的文章

    •  类文件校验器;

      类文件的校验一般有四个步骤:

    1. Class文件的结构验证;
    2. 类型数据的语义检查(包括具体的操作码,操作数);
    3. 字节码的验证(例如程序的可停机性,操作码的合法性);
    4. 符号引用的验证(过程中还包括了装载引用外部类,符号替换,链接过程的二进制兼容性判断)。
    • 内置的安全特性;

      包括了如下几个方面:

    1. 类型安全的引用转换;
    2. 结构化内存访问(屏蔽指针操作);
    3. 自动垃圾回收;
    4. 数组边界检测;
    5. 空引用检查。
    • 安全管理器与Java API。

      检测Java虚拟机堆外部资源访问的合法性,即界定沙盒的边界。不会被默认设置,如果需要检测在编码中需要自行编写。参见Java.lang.SecurityManager下的一系列以“check”开头的方法。

  • 相关阅读:
    冰思《L.M》
    Delphi 基本语法与操作《转》
    ADO实现单条记录的刷新《转》
    js正则限制input框输入的常用代码《转》
    Delphi 获取汉字的拼音首字母《转》
    baby one more time
    邮件/域名/DNS相关知识
    Visual Studio 2005 正式版(RTM) BT下载地址
    经典爱情十句话
    Asp中使用存储过程代码收集
  • 原文地址:https://www.cnblogs.com/yahokuma/p/3695557.html
Copyright © 2011-2022 走看看