首页 > 其他分享 >J V M3沙箱安全机制

J V M3沙箱安全机制

时间:2022-11-04 18:12:46浏览次数:39  
标签:Java M3 沙箱 java 机制 native public 加载

沙箱安全机制  
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();
}
}

标签:Java,M3,沙箱,java,机制,native,public,加载
From: https://www.cnblogs.com/Chen12138/p/16858671.html

相关文章

  • STM32 UART学习
    UART配置步骤:1、初始化串口所需要的GPIO2、初始化串口,USART_InitTypeDef3、中断配置(接收中断,中断优先级)4、使能串口5、编写接收和发送函数6、编写中断服务函数 ke......
  • STM32禁用JTAG,并使用JTAG引脚为通用IO口(转载)
    STM32禁用JTAG,并使用JTAG引脚为通用IO口两种禁用模式标准库配置:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF,ENABLE);//......
  • Flask学习笔记(十八)-Flask 信号机制
    一、说明官方文档-信号参考Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为安装:pip3installblinker二、自定义信号自定义......
  • SSL或TLS协议运行机制的概述(转载)
    SSL或TLS协议运行机制的概述(转载)SSL或TLS协议运行机制的概述(转载)2021-01-12T10:14:27+08:00互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运......
  • 野火 STM32MP157 开发板内核和设备树的编译烧写
    一、环境编译环境:Ubuntu版本:18.4.6交叉编译工具:arm-linux-gnueabihf-gcc版本:7.4.1开发板:STM32MP157pro烧写方式:STM32CubeProgrammer、TFTP、在线烧写安装工具gcc......
  • 异常机制
    1.什么是异常(Exception)指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等分类:检查性异常最具代表性的检查性异常是用户错误或问题引起的......
  • 《STM32MP1 M4裸机HAL库开发指南》第十二章 C语言LED灯实验
    第十二章C语言LED灯实验为了加深理解汇编语言以及汇编初始化过程,第十一章我们使用汇编来控制LED0。本章节我们来学习使用C语言来控制LED0,实际的开发中我们接触最多的就是C......
  • 【重磅】Serverless Devs 进入 CNCF 沙箱,成首个入选的 Serverless 工具项目!
    近日,经过云原生计算基金会(CNCF)TOC例会上投票决议,ServerlessDevs正式成为CNCF官方沙箱项目。开源开放的Serverless开发者平台——ServerlessDevs由阿里云开源,致......
  • C++ 反射机制
    前言反射的概念:指程序在运行时,访问、检测和修改它本身状态或行为的一种能力。wikipedia简单的来说,就是一种自描述和自控制的能力。如果联想到镜子,就可以很好的理解,你能通......
  • 【c&c++】 cjson使用_Keil环境下Jansson解析库的使用——基于STM32F103
    前言之前我曾经写过几个JSON解析库的使用方法:Qt平台下使用QJson解析和构建JSON字符串使用cJSON库解析JSON使用cJSON库构建JSON对于嵌入式开发,比较常用的就是cJSON解析......