J V M(三)沙箱安全机制
沙箱安全机制
Java安全模型的核心就是Java沙箱(sandbox)
什么是沙箱?
沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在
虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,
通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。
沙箱主要限制系统资源访问。
系统资源包括什么?
CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样
组成沙箱的基本组件:
1.字节码校验器(bytecode verifier):确保Java类文件遵循Java语言的规范。
这样可以帮助Java程序实现内存保护。但并不是所有的类文件都会经过字节码校验,
比如核心类。
2.类加载器(class loader):其中类加载器在3个方面对Java沙箱起作用
(1)它防止恶意代码去干涉善意的代码;//双亲委派机制
(2)它守护了被信任的类库边界;
(3)它将代码归入保护域,确定了代码可以进行哪些操作。//沙箱安全机制
package java.lang;
public class String {
// 双亲委派机制: 安全
// 应用程序加载器-扩展程序加载器-根加载器
// 自底向上检查类是否被加载,自顶向下加载类
// 1.APP-->EXC--BOOT(最终执行) 根加载器叫bootstrapClassLoader
// 当前是应用程序加载器,它会先向上找,找到EXC
// 如果根加载器没有这个类,就开始倒着走,BOOT里面没有,就去EXT里面找,EXT也没有,就去APP里面找
public String toString(){
return "Hello";
}
public static void main(String[] args) {
String s = new String();
s.toString();
new Thread().start();
// native是一个计算机的函数,一个Native Method 就是一个Java调用非java代码的接口。
// 方法的实现由非java语言实现,例如C或者C++
// 在定义一个native method时,并不提供实现体(有些像定义一个Java Interface),
// 因为其实现体是由非Java语言在外面实现的。
// 标识符native可以与所有其它的java标识符连用,但是abstract除外。
// 这是合理的,因为native暗示这些方法是有实现体的,只不过这些实现体是非java的,
// 但是abstract却显然的指明这些方法无实现体。native与其它java标识符连用时,
// 其意义同非Native Method并无差别,
// 比如native static表明这个方法可以在不产生类的实例时直接调用,这非常方便,
// 比如当你想用一个native method去调用一个C的类库时。
}
// 1.类加载器收到类加载的请求
// 2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
// 3.启动类加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载
// 4.重复步骤 3
// Class Not Found~
// null:java调用不到,或者不存在 C、C++
// java = C++--: 去掉繁琐的东西,指针,内存管理~ ---java中的内存管理交给了jvm
}
-----------------------------------------------------------------------------------------------------
package com.example.demo;
import java.awt.*;
import java.io.File;
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.a();//或者使用while循环把内存挤爆
// new File(); 可以往File类里面写代码,也就是病毒。或者改写磁盘文件也可以。
// new Robot(); //可以操作电脑。比如说 移动鼠标或者键盘自动按下
}
public void a(){
b();
}
public void b(){
a();
}
}
J V M(三)沙箱安全机制的更多相关文章
- Java沙箱安全机制介绍【转载】
沙箱安全机制的应用层面:360沙箱.win10沙箱.包括VMware Workstation.Oracle VM VirtualBox都可以充当沙箱去使用,沙箱中的操作与本机无关,进而保证本机的安全性 ...
- 关于Mysql数据库longblob格式数据的插入com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V问题分析
当数据库字段为blob类型时 ,我们如果使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法需要注意 在向blob字段类型中插入数据时 ...
- 【css笔记】css中的盒模型和三种定位机制(固定定位,绝对定位,浮动)
html页面上的元素都可以看成是框组成的,框通过三种定位机制排列在一起就过程了我们看到的页面.而框就是盒模型. 盒模型 1.页面上的每个元素可以看成一个矩形框,每个框由元素的内容,内边距,边框和外边距 ...
- Flink学习(三)状态机制于容错机制,State与CheckPoint
摘自Apache官网 一.State的基本概念 什么叫State?搜了一把叫做状态机制.可以用作以下用途.为了保证 at least once, exactly once,Flink引入了State和 ...
- gtest 三种事件机制
前言: 1.首先说明gtest中事件的结构层次: 测试程序:一个测试程序只有一个main函数,也可以说是一个可执行程序是一个测试程序.该级别的事件机制会在程序的开始和结束执行. 测试套件:代表一个测试 ...
- Koa源码分析(三) -- middleware机制的实现
Abstract 本系列是关于Koa框架的文章,目前关注版本是Koa v1.主要分为以下几个方面: Koa源码分析(一) -- generator Koa源码分析(二) -- co的实现 Koa源码分 ...
- 深入浅出 JMS(三) - ActiveMQ 安全机制
深入浅出 JMS(三) - ActiveMQ 安全机制 一.认证 认证(Authentication):验证某个实体或者用户是否有权限访问受保护资源. MQ 提供两种插件用于权限认证: (一).Sim ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- Oracle基础学习2--Oracle登录与三种验证机制
首先,Oracle安装完毕有三个默认用户 Ø Sys:数据库对象的拥有者.权限最高.password在安装的时候(口令管理)能够改变 Ø System:数据库管理员,password为manage ...
- Oracle数据库的三种验证机制
关于超级管理员登陆不需要密码因为: 数据库的三种验证机制: 操作系统验证(具有sysdba和sysopera的用户) 密码文件验证(具有sysdba和sysopera的用户) 数据库验证(普通用户) ...
随机推荐
- Linux内存占用过高排查过程
1 查看服务器状态 系统是 CentOS Linux release 7.5.1804 (Core)使用top命令看了下系统的状态 系统的整体负载和cpu并不高,但是内存使用比较高(总8G使用了7.2 ...
- Java第二讲动手动脑
1. 运行结果 上述代码方法名相同,但是数据类型不同,体现了Java重载的特点(1)方法名相同(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同.也体现了Java中,当函数名相同时,会通过 参 ...
- LeetCode-540 有序数组中单一元素
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array 题目描述 给你一个仅由整数组成的 ...
- 如何设置VBA代码的密码?如何取消VBA代码的密码?
经常有网友问,用Access把软件开发好了,怎么样设置VBA代码的密码?以保护自己的代码不被同事修改.这里简单整理了一下.设置VBA代码的密码及取消VBA代码的密码步骤如下:1.打开任意一个窗体,进入 ...
- Abp返回时间格式化
private void ConfigureDateTime() { Configure<MvcNewtonsoftJsonOptions>(options => { options ...
- JavaScript表单form
form表单实例 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"& ...
- python 排序的几种方式(内置排序函数, 选择排序, 冒泡排序)
#python 排序的方法 #Python 列表有一个内置的 list.sort() 方法可以直接修改列表 list1 = [1,3,5,10,2,1] list1.sort() print(list ...
- navigator跳转
navigator跳转 open-tab="switchTab"/open-type="navigate" <navigator url="/ ...
- vue 事件传递原始 DOM 事件
vue 事件传递原始 DOM 事件 在事件传参中传递特殊变量 $event @click= "warn('1', $event)"
- 2015 for Mac PDF编辑软件
开始前请先断开网络连接,断网,断网,断网! 开始前请先断开网络连接,断网,断网,断网! 开始前请先断开网络连接,断网,断网,断网! 编辑 1.软件下载完成后,打开软件包如上图五个文件(第1个是安 ...