JVM系列(四):沙箱安全机制笔记

简介: Java安全模型的核心就是Java沙箱(sandbox)。沙箱机制就是将Java代码限定只能在虚JVM虚拟机中特定的运行范围,并且严格限制代码对本地系统资源访问,通过这样的方式来保证对Java代码的有效隔离,防止对本地操作系统造成破坏。

今天主要给大家分享JVM的沙箱安全机制笔记

image_ab665caa.png

1、沙箱机制的概念

Java安全模型的核心就是Java沙箱(sandbox)。

沙箱机制就是将Java代码限定只能在虚JVM虚拟机中特定的运行范围,并且严格限制代码对本地系统资源访问,通过这样的方式来保证对Java代码的有效隔离,防止对本地操作系统造成破坏。

2、沙箱的作用

主要限制系统资源(CPU、内存、文件系统、网络)的访问。

不同级别的沙箱对系统资源访问的限制也有差异。

3、本地代码和远程代码

Java的执行程序分为:本地代码和远程代码。,

本地代码:默认视为可信任的,可以访问一切本地资源。

远程代码:被看作是不受信的。对于授信的本地代码,对于非授信的远程代码在早期的Java实现中,安全依赖于沙箱(Sandbox)机制。

4、沙箱安全机制模型

4.1 JDK1 .0安全模型

JDK1 .0安全模型本地代码可以访问系统资源,远程代码无法访问系统资源,比如用户希望远程代码访问本地系统的文件时候,就无法实现。

image_d755f1d3.png

4.2 JDK1 .1安全模型

JDK1 .1 安全模型版本中,针对安全机制做了改进,增加了受信任安全策略,允许用户指定代码对本地资源的访问权限

image_ef87b491.png

4.3 JDK1 .2安全模型

JDK1 .2安全模型改进了安全机制,增加了代码签名。不论本地代码或是远程代码,统一按照用户的安全策略设定,由类加载器加载到虚拟机中权限不同的运行空间,从而来实现差异化的代码执行权限控制。

image_05ba558f.png

4.4 目前最新的安全模型

目前最新的安全模型引入了域 (Domain) 的概念。JVM虚拟机会把所有代码加载到不同的系统域和应用域,系统域部分专门负责与关键资源系统进行交互,而每个应用域部分则通过系统域的部分代理来对各种需要的资源进行精细划分然后可以进行访问。JVM虚拟机中不同的受保护域 (Protected Domain)对应不一样的权限 (Permission)。存在于不同域中的类文件就拥有了它所包含应用域所有可访问资源之和。

image_125195c1.png

5、沙箱安全机制的基本组件

5.1 字节码校验器(bytecode verifier)

确保lava类文件遵循lava语言规范。这样可以帮助Java程序实现内存保护。但并不是所有的类文件都会经过字节码校验,比如核心类。

5.2 类装载器(class loader)

  • 防止恶意代码去干涉善意的代码,比如:双亲委派机制
  • 守护了被信任的类库边界;
  • 将代码归入保护域,确定了代码的权限范围可以进行哪些资源操作

5.3 存取控制器(access controller)

存取控制器可以控制核心API对操作系统的存取权限,用户可以设定控制策略。

5.4 安全管理器(security manager)

安全管理器主要是核心API和操作系统之间的主要接口。比如实现权限控制,比存取控制器优先级高。

5.5 安全软件包(security package) :

java.security下的类和扩展包下的类,允许用户为应用增加所需要安全特性:安全提供者、消息摘要、数字签名keytools、加密、鉴别。

相关文章
|
1天前
|
存储 缓存 Java
金石原创 |【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)
金石原创 |【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)
42 1
|
7月前
|
Java 开发者 容器
【面试题精讲】JVM-打破双亲委派机制-OSGI模块化
【面试题精讲】JVM-打破双亲委派机制-OSGI模块化
|
7月前
|
安全 Java 编译器
java------JVM之类加载和双亲委派机制
java------JVM之类加载和双亲委派机制
|
1天前
|
Java 程序员 Python
JVM的垃圾回收机制(GC机制)
Java的JVM实行自动垃圾回收机制(GC),主要针对堆中的对象。当对象无引用可达时,被视为垃圾。垃圾回收包含“找垃圾”和“回收垃圾”两步。找垃圾通过引用计数(非Java使用)和可达性分析(Java使用)来识别无用对象。可达性分析从根对象开始遍历,未被标记的对象视为垃圾。回收垃圾常用标记清除方法,但可能导致内存碎片。此过程消耗资源,且碎片化影响内存分配效率。
14 1
|
1天前
|
前端开发 Java 开发者
JVM类加载器的分类以及双亲委派机制
JVM类加载器的分类以及双亲委派机制
|
1天前
|
监控 Java 关系型数据库
JVM工作原理与实战(十三):打破双亲委派机制-线程上下文类加载器
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了打破双亲委派机制的方法、线程上下文类加载器等内容。
23 2
|
1天前
|
监控 安全 前端开发
JVM工作原理与实战(十二):打破双亲委派机制-自定义类加载器
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了打破双亲委派机制的方法、自定义类加载器等内容。
19 1
|
1天前
|
监控 前端开发 安全
JVM工作原理与实战(十一):双亲委派机制
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了双亲委派机制、父类加载器、双亲委派机制的主要作用、双亲委派机制常见问题等内容。
14 1
|
1天前
|
安全 前端开发 Java
【JVM】双亲委派机制详细解读(通俗易懂)
【JVM】双亲委派机制详细解读(通俗易懂)
175 0
|
8月前
|
存储 前端开发 安全
JVM系列(1):双亲委派机制和沙箱安全机制
 JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
55 0