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分布式应用技术架构介绍
分布式架构的演进 系统架构演化历程-初始阶段架构
随机推荐
- 【英语】Bingo口语笔记(16) - 咬舌音和咬唇音的辨读
- struts2运行机制
struts2是web应用中一个常用的mvc框架,下面探讨一下其内部运行机制: 1.从客服端浏览器输入的url后,客服端通过http协议发送一个请求到服务器(tomcat),Tomcat收到这个请求之 ...
- 【转】让Souce Insight支持多种语言的语法高亮:Python,Ruby,ARM汇编,windows脚本文件(bat/batch),PPC,SQL,TCL,Delphi等
原文网址:http://www.crifan.com/source_insight_support_highlight_for_python_ruby_arm_batch_ppc_sql_tcl_de ...
- Phonegap中用ajax读取PHP服务器的数据
直接上代码: HTML: var URL="网站地址&callback=?"; $.ajax({ type : 'GET', url : URL, dataType : ' ...
- ubuntu 查看系统版本信息
查看cpu信息cat /proc/cpiinfo 查看ubuntu版本:cat /etc/issue 查看系统是32位还是64位方法1:#查看long的位数,返回32或64 getconf LONG_ ...
- BroadcastReceiver应用详解
今天我们来讲一下Android中BroadcastReceiver的相关知识. BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在And ...
- C#对Excel打印时,PageSetup 对象详解
PageSetup 对象包含所有页面设置的属性(左边距.底部边距.纸张大小等).下面按“页面”.“页边距”.“页眉/页脚”.“工作表”和“无对应选项卡”五个类别,逐一介绍. 一.页面 与“页面”选项卡 ...
- 基数排序/Go实现
package main import ( "fmt" ) type Radix struct { length int //序列中最大数的位数 radix [][]int //0 ...
- android面试题(转)
1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚 ...
- 12、NFC技术:读写NFC标签中的Uri数据
功能实现,如下代码所示: 读写NFC标签的Uri 主Activity import cn.read.write.uri.library.UriRecord; import android.app.Ac ...