自从 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/

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

java的沙盒安全模式_Java沙箱机制相关推荐

  1. IOS 沙盒(sandbox)机制和文件操作

    1.IOS沙盒机制( 沙盒(sandbox)机制) IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声 ...

  2. java苹果沙盒验证参数问题_php – iOS7 – 收据未在沙盒验证 – 错误21002(java.lang.IllegalArgumentException)...

    我正在将应用程式从iOS6转换为iOS7.在我使用不建议使用的transactionReceipt方法之前,我正在尝试推荐的方法来检索收据,然后在64位编码: NSData *working = [N ...

  3. ios 获取沙盒文件名_iOS_沙盒(sandbox)机制及获取沙盒路径和文件操作(NSFileManager)...

    ⚠️版权声明:本文为博主原创文章,转载必须标明原文出处. ​一. 每个iOS应用SDK都被限制在"沙盒"中,"沙盒"相当于一个加了仅主人可见权限的文件夹,苹果对 ...

  4. java类验证和装载顺序_Java类加载机制实现流程及原理详解

    前言 我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息.虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转化解析和初始化,最终形成可以被虚 ...

  5. java类加载是什么意思_java 类加载机制有什么用

    展开全部 AVA类加载机制详解 "代码编译的结果从本地机器码转变为字节码,是存储格式发展的一32313133353236313431303231363533e78988e69d8331333 ...

  6. java序列化算法透析_Java序列化机制与原理的深入分析

    Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...

  7. java类验证和装载顺序_java类加载机制,你会了吗?

    什么是类加载机制呢? java虚拟机将编译后的class文件加载到内存中,进行校验.转换.解析和初始化,到最终的使用.这就是java类加载机制: 下面就开始今天的内容: 1.类加载的生命周期:加载(L ...

  8. java反射的编译过程_Java反射机制小结和实际操作

    一.什么是反射 1.编译和运行 在了解什么是Java反射机制前,先聊聊Java的编译和运行. 还记得第一次使用记事本编写第一个Java程序的场景吗?通过命令窗口,使用javac命令编译一个.java文 ...

  9. java自动的废料收集_Java 垃圾收集机制

    对象引用 Java 中的垃圾回收一般是在 Java 堆中进行,因为堆中几乎存放了 Java 中所有的对象实例.谈到 Java 堆中的垃圾回收,自然要谈到引用.在 JDK1.2 之前,Java 中的引用 ...

最新文章

  1. 百度李彦宏遭现场泼水,瞬间懵圈,湿身调侃AI遇到的挫折
  2. python处理流程-在python异步协程中处理流程分析(一)
  3. django jquery ajax 知识点
  4. 类与接口(二)java的四种内部类详解
  5. Scrapy爬取姓名大全,看看那个名字最受父母青睐
  6. Windows下SVN服务器的搭建步骤
  7. PCI、PCI-X、PCI-E AGP区别
  8. win7 网络打印机 未授予用户在此计算机上的请求登录类型,Win7提示未授予用户在此计算机上的请求登录类型...
  9. verilog求倒数-ROM实现方法
  10. 程序员笔记 CherryTree 0.99.28 发布
  11. 机器太慢,导致获取系统剪贴板数据超时
  12. 2022年深圳杯建模A题思路: 破除“尖叫效应”与“回声室效应”,走出“信息茧房”
  13. 什么是私域?什么是会员制?
  14. 低功耗基础概念——Level Shifter cell补充
  15. 如何去掉vi下面显示的[converted]标志
  16. 采集今日头条数据 python 爬虫 API接口
  17. Metal每日分享,图像阀值素描滤镜效果
  18. 【强化记忆】生物选修三填空题考点强化记忆2-胚胎工程、安全伦理问题、生态工程——2017年2月25日...
  19. ToLua原理和使用教程
  20. 金蝶云星空html5的网页主界面如何修改,金蝶云星空系统与嵌套网页进行交互实现详解...

热门文章

  1. 基于Extjs的OPOA
  2. 真格量化——做空波动率卖期权策略
  3. ContextLoaderListener介绍
  4. python中opencv是什么_python-opencv的用法
  5. Python02期预科课程笔记索引
  6. Random Forest算法中的参数详解
  7. iphone无线充电充电测试软件,瞎折腾星人的测评 篇一:想体验iPhone的无线充电?这可能是最具性价比的选择了!...
  8. 计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...
  9. 一篇英文文档中找出频数最多的10个单词
  10. PHP程序员面试中经常被提问的问题【转载】