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虚拟机中,可以解决所有性能问题。
Java沙箱技术的更多相关文章
- Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
- java 深入技术八(内省)
1. javabean的软件设计思想 2.内省:封装了java反射,提供直接操作属性的Setter和getter方法的方法 3.核心API:BeanInfo java 的描述信息,Introspect ...
- (转)java缓存技术,记录
http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇 ...
- paip.java 架构师之路以及java高级技术
paip.java 架构师之路以及java高级技术 1. Annotation 设计模式... 概念满天飞.ORM,IOC,AOP. Validator lambda4j memcache. 对 ...
- 深入分析Java Web技术内幕(修订版)
阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著 ISBN 978-7-121- ...
- Java序列化技术与Protobuff
http://www.cnblogs.com/fangfan/p/4094175.html http://www.cnblogs.com/fangfan/p/4094175.html 前言: Java ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
- 深入分析Java Web技术(1)
BS网络模型的基本过程: 当我们在浏览器中输入"www.google.com"的时候,首先会请求DNS服务器对域名进行解析成都应的IP地址,然后根据这个IP地址在互联网上找到谷歌的 ...
- Java分布式应用技术架构介绍
分布式架构的演进 系统架构演化历程-初始阶段架构
随机推荐
- 跨域利器JSONP(转)
何为跨域?何为JSONP?JSONP技术能实现什么?是否有必要使用JSONP技术? 跨域 就是由于JavaScript同源策略的限制,使得a.com域名下的js无法操作b.com或c.a.com域名下 ...
- 在Eclipse中运行cmd
第一步:设置一个新的外部配置工具 在 Eclipse 中,选择 “Run -> External Tools -> External Tools Configurations” 第二步: ...
- BZOJ 4597 随机序列
一定要想到,对于一个空位如果填了+,那么一定有一个表达式这里填-号使得后面的全部抵消掉.这点十分重要. 于是发现这个答案只和前缀积有关,线段树维护即可. #include<iostream> ...
- BZOJ 1202 狡猾的商人
前缀和+带权并查集. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...
- 原创:无错版!让DEDE只生成一个RSS文件,不分栏目
DEDE为每一个栏目都独立创建一个rss文件, 如果用户要整站订阅相当不方便. 所以需要修改让dede只生成一个rss. 网上大部分帖子要么是抄, 要么是有问题少了步骤. 今天特意整理下. 分享.. ...
- 【C#学习笔记】改变字体
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 【转】Eclipse编辑shell的插件(shellEd)
原文网址:http://blog.sina.com.cn/s/blog_a42d507e01019mlp.html Eclipse官方网站:http://download.eclipse.org/ 1 ...
- 中小型数据库 RMAN CATALOG 备份恢复方案(二)
中小型数据库呈现的是数据库并发少,数据库容量小,版本功能受限以及N多单实例等特点.尽管如此,数据库的损失程度也会存在零丢失的情形.企业不愿意花太多的钱又要保证数据库的可靠稳定,可是苦煞了我这些搞DB的 ...
- 使用Rxjava缓存请求
最近,我尝试使用RxJava开发了一款闲时备份app.我必须承认,一旦你get到了正确的方式,RxJava几乎感觉就像作弊.一切看起来更简洁,多个请求能够被组合,且非常容易控制.通过在UI线程观察和在 ...
- mysql innodb锁简析(2)
继续昨天的innodb锁的分析: 注:此博文参考一下地址,那里讲的也很详细.http://xm-king.iteye.com/blog/770721 mysql事务的隔离级别分为四种,隔离级别越高,数 ...