java的沙盒安全模式_Java沙箱机制

自从 Java 技术出现以来, 有关 Java 平台的安全性及由 Java 技术发展所引发的新的安全性问题,引起了越来越多的关注.目前,Java 已经大量应用在各个领域,研究 Java 的安全 性对于更好地使用 Java 具有深远的意义.

本文主要从两个方面阐述了 Java 的安全性:一是 Java 平台(主要通过 JDK)的安全完备性;二是 Java 虚拟机的安全机制.

Java 平台提供的原始安全模式是:沙箱模型.

对于从开放网络中得到的不被信任的代码, 该模型提供了一个非常严格的使用环境.沙箱模型的实质在于信任本地代码, 使其可以完全访问重要的系统资源(例如文件系统) ;而对于下载的远程代码则不被信任,因此只能访问 沙箱内提供的有限资源.

沙箱模型通过 Java 开发工具包(JDK)发布,一般被用 JDK 编写的应用程序所采纳(包括支持 Java 的网络浏览器) . Java 开发工具 JDK 1.2 中引入了新的安全体系结构,安全检查扩展到所有Java 程序,包括应用程序及 Applet.所有本地代码均可信任的概念已不再存在.相反,本地代码的安全控制与Applet的类似.当然,必要时本地代码(或远程代码)上的策略仍有可能被声明为具有最大自由权,从而使之类似完全可信任的代码那样高效运行.同样的原则适用于签名的Applet和所有Java应用程序. Java 沙箱是运行 Java 小应用程序的一个软件单元,对Java 小应用程序的访问权限加以限制,防止它访问计算机的关键部分,如磁盘驱动器,网络套接口和内存区.

Java 沙箱由三部分组成:字节码检验器,类装载器和安全管理器,这三部分共同完成装载和运行时对Java Applet的检验,用以限制对文件系统和网络的访问以及对浏览器内部的访问. Java 程序可以从网络上下载运行,这必然带来许多不安全因素.一些恶意的 Hacker 可以直接写出字节代码段攻击用户节点, 如删除文件, 搞乱硬盘或未经用户许可在网上发送本地信息等.这些防卫本地机被攻击的任务就交给了 Java 虚拟机完成.Java 虚拟机提供了几种安全机制,其中两种主要的机制是安全管理器和 Java 类文件认证器. 安全管理器是安全的实施者, 它是一个可扩展类, 提供加在应用程序和特殊系统上的安全措施.它实现 Java 虚拟机的安全策略.安全管理器建立 Java 程序的名空间,限制对网络, 本地文件系统和程序其它部分的访问. Java 认证器在.class 文件运行前完成该文件的安全检查, 确保 Java 字节码符合 Java 虚拟 机规范.Java 平台通过使用认证器查看类文件的句法和词法的正确性,检查版本及 API 符合性等,保证病毒和其它恶意程序不会侵犯本地系统.认证器包括四个阶段的操作:类文件认证,类型系统认证,字节码认证和运行时类型的访问检查.此外,认证器在检查期间还能识别算法操作的上溢和下溢等其它可能发生在运行期间的程序错误.

Java 虚拟机是加在当前主机操作系统上的,由于 Java 字节码执行速度目前要比本地机器慢 10~20 倍,速度问题可能是影响 Java 推广的惟一原因.目前,针对 Java 虚拟机程序速度慢的问题, Microsoft,Borland 等提出了及时编译技术(Just-In-Time)JIT.具体说,就是 JIT 编译器在程序开始执行前把所有字节码翻译成本地机器码, 然后再将翻译后的机器码放在 CPU 上运行.这样,就用字节码编译器代替了原来的解释器,它对用户透明而又提高 了执行速度.也许将来 JIT 编译器加到 Java 虚拟机中,可以解决所有性能问题.

转载自:http://blog.163.com/teach_wu/blog/static/212959047201362032648677/

如有侵权请作者联系我删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP斐波那契数列

今天面试遇到一个斐波那契数列的求法 1 1 2 3 5 8 13 ... 要求写出算法 //数组法 function test($num){$arr[];for($i0;$i<$num;$i){if($i0 || $i1){$arr[$i]1;}else{$arr[$i]$arr[$i-1]$arr[$i-2];}}return $arr[$num]; } print_r(test(10));//递归法 function fib_recursi…

再说嵌入式入门

我之前写过几篇嵌入式入门的文章 不过我的读者还是觉得不够过瘾&#xff0c;我觉得还是要着重说一下嵌入式软件应该重点学习什么&#xff0c;guoqing收假最后一天写文。精通C语言 精通C语言 精通C语言C语言对于嵌入式软件来说就是他的命脉&#xff0c;不懂C语言的人根本就不能说…

java ios 开发工具_iOS应用开发的五个Java开源工具

随着第三方工具的不断壮大&#xff0c;开发人员逐渐摆脱政策束缚&#xff0c;对于iOS系统的封闭性为其他语言(如Java)开发者诟病得到解脱&#xff0c;开始使用自己熟悉的语言来编写iOS本地应用&#xff0c;或将其他平台上的应用移植到iOS上。本文为你介绍5款开源的开发工具&…

hive 时间转字符串_大数据面试杀招——Hive高频考点,还不会的进来挨打

一、什么是Hive&#xff0c;为什么要用Hive&#xff0c;你是如何理解Hive?面试官往往一上来就一个“灵魂三连问”&#xff0c;很多没有提前准备好的小伙伴基本回答得都磕磕绊绊&#xff0c;效果不是很好。下面贴出菌哥的回答&#xff1a;Hive是基于Hadoop的一个数据仓库工具&a…

用数组实现一个栈

#include<stdio.h> #define STACK_SIZE 64 /*栈大小*/ #define TOP_OF_STACK -1 /*栈顶位置*/ typedef int ElementType; /*栈元素类型*/ #define SUCCESS 0 #define FAILURE -1 /*定义栈结构*/ typedef struct StackInfo {int topOfStack; /*记录栈顶位置*/ElementType …

java基础----Java中枚举的使用(一)

这里介绍一下java中关于枚举的使用。 java中枚举的使用 一、枚举中可以定义方法 参照于TimeUnit的使用&#xff0c;TimeUnit.MILLISECONDS.sleep(1000); LoveUtils的类&#xff1a;package com.linux.huhx.enumTest;/*** Created by huhx on 2017-05-24.*/ public enum LoveUti…

java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)

JPA 开发所需的Jar包 (基于Hibernate)(一)下载Sun 的JPA规范(即&#xff1a;Jar包)登陆JavaEE 的 Technologies 页面:http://java.sun.com/javaee/technologies/index.jsp选择 Java Persistence 2.0选择 Final Release 中的 Download Page 后进入下面的界面&#xff1a;下载如下…

用链表实现一个栈

#include<stdio.h> #include<stdlib.h> typedef int ElementType; /*栈元素类型*/ #define SUCCESS 0 #define FAILURE -1 /*定义栈结构*/ typedef struct StackInfo {ElementType value; /*栈存储的数据*/struct StackInfo *next; /*指向栈的下一个元素*/ }StackI…

qlsql

1.导入sql文件&#xff1a;qlsql中打开命令窗口&#xff0c;输入 文件路径 &#xff0c;直接点击执行就能导入&#xff1b; 2.创建角色分配权限依次&#xff1a;connect&#xff0c;resource&#xff0c;dba&#xff0c;dba是管理层&#xff1b; 3.导出命令&#xff1a;exp 用…

dedecms怎么改php版本_PHP程序员进阶之路

PHP开发工程师处在初级、中级和高级阶段需要掌握的技能也不同&#xff0c;本文分享PHP工程师处在不同阶段下需要掌握的技能。PHP初级开发工程师PHP初级开发工程师需要掌握的技能1. 走进PHP的世界PHP介绍、PHP版本发展历史、PHP薪资水平和职业发展、WEB开发中基础概念介绍、PHP开…

C语言入坑指南-数组之谜

前言在C语言中&#xff0c;数组和指针似乎总是“暧昧不清”&#xff0c;有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前&#xff0c;我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们…

mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息

MySQL使用show status查看MySQL服务器状态信息这篇文章主要介绍了MySQL使用show status查看MySQL服务器状态信息,需要的朋友可以参考下在LAMP架构的网站开发过程中&#xff0c;有些时候我们需要了解MySQL的服务器状态信息&#xff0c;譬如当前MySQL启动后的运行时间&#xff0c…

Fiddler抓包使用教程-安装配置

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/72876628 本文出自【赵彦军的博客】 Fiddler是什么&#xff1f; Fiddler是一个http调试代理&#xff0c;它能 够记录所有的你电脑和互联网之间的http通讯&#xff0c;Fiddler 可以也可以让你检查所…

VS2019调试查看变量_你很可能需要知道这个调试小技巧

缘起 最近在调试的时候&#xff0c;需要观察第三方容器中每一个元素的值。默认情况下&#xff0c;vs 并不知道如何显示第三方容器的内容&#xff0c;只能手动观察容器中的每一个值&#xff0c;超级不方便。我找到一个非常给力的好办法&#xff0c;你还知道其它好办法吗&#xf…

Linux i2c子系统驱动probe

I2C 子系统I2C 子系统使用的概率非常大&#xff0c;我之前有做过手机的经验&#xff0c; 手机跑的安卓系统&#xff0c;内核是Linux&#xff0c;手机的很多器件都是用I2C通信的&#xff0c;我经历过从板级设备到dts设备树的阶段&#xff0c;知道I2C在整个系统的举足轻重&#x…

java生成flash_web-flash发布了代码生成插件

web-flash 是一个基于 Spring BootVue.js 的后台管理系统。现在发布了其基于 Intellij IDEA 的代码生成插件!你可以再 idea 插件仓库中搜索 webflash-generator (目前插件在发布审核中&#xff0c;可能会搜索不到)&#xff0c;或者直接从本地安装插件&#xff1a;flash-generat…

JAVA多线程程序ProgressBar

JAVA多线程程序ProgressBar 题目简介&#xff1a; 思维导图&#xff1a; 实验代码&#xff1a;建议先看CalThread类&#xff0c;计算线程的实现&#xff0c;再作基本CalFrame类的界面&#xff0c; 然后作ReadThread类&#xff0c;结合CalFrame的组件&#xff0c;最后完善CalFra…

ad如何选中当前层上的器件_82条AD转换设计经验总结!

看到一片关于AD转换设计中的基本问题整理博文&#xff0c;特地转载过来和大家共分享。了解数据转换器错误及参数1、如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题?ADC之前的信号调理&#xff0c;最根本的原则就是信号调理引起的噪声和误差要在ADC的…

为什么Linux内核里大量使用goto,而很多书籍却不提倡使用?

关于C语言的goto语句存在很多争议&#xff0c;很多书籍都建议“谨慎使用&#xff0c;或者根本不用”。Linux之父Linus在Linux中大量使用goto&#xff0c;也是在启示着我们可以合理使用goto语句。存在即合理&#xff0c;既然是C语言中的一个知识点&#xff0c;我们还是有必要学会…

python特征匹配 查找_特征匹配+单纯形查找对象

我尝试使用opencv获取一个查询图像并在一个基本图像中进行匹配。我看了一下在线教程&#xff0c;你看&#xff0c;他们有示例代码来做这件事。所以我复制并粘贴了代码&#xff0c;并尝试用一些试用图像来运行它。下面是代码和一组图像示例。在import numpy as npimport cv2from…