java虚拟机内置的安全特性
java虚拟机在执行字节码时还进行其他一些内置的安全机制的操作。
1.类型安全的引用转换
2.结构化的内存访问(无指针算法)
3.自动化垃圾收集(不必显式地释放被分配的内存)
4.数组边界检查
5.空引用检查
java程序只能使用类型安全,结构化的方法去访问内存
这样可以避免黑客知道一个类装载器在内存中的位置,赋予一个指针指向那块内存,从而对类装载器的数据进行操作,而达到破坏安全系统的目的。
未指明运行时数据空间在java虚拟机内部是怎样分布的
运行时数据空间是指一些java虚拟机用来存储一个运行时java程序所需的内存空间。包括:java栈(每个线程一个),一个存储字节码的方法区,以及一个垃圾收集堆(用来存储由运行的程序创建的对象)。java虚拟机规范并未决定使用什么数据结构来表示运行时的数据空间,并且存放在内存中的哪个位置。这样,黑客就不能够凭借class文件中的内容,知道内存中数据的内存布局。这样,即使能够突破java虚拟机的内存访问限制,也会无法找到他们想找到的内容。但是可以使用本地方法来达到破坏内存的目的。
异常的结构化错误处理
当一个违反安全的行为发生时,java虚拟机会做一些异常的结构化处理,java虚拟机将抛出一个异常或者错误,而不是崩溃。这个异常或者错误将导致这个线程死亡,而不是整个系统陷入瘫痪。异常机制使程序能够将控制从发生异常的地方转到处理这个异常的情况。
安全管理器和java api
java安全模型的前三个组成部分-类装载器体系结构,class文件检验器和java内置的安全特性一起达到一个共同的目的:
保持java虚拟机实例和它正在运行的应用程序的内部完整性,使得它们不受恶意或者有漏洞的代码侵犯。
java安全模型的第四部分:安全管理器:主要用于保护虚拟机的外部资源不被虚拟机内运行的文件或者有漏洞的代码侵犯。
安全管理器是一个单独的对象,在运行的java虚拟机中,它在访问控制--对于外部资源的访问控制--中起中枢作用。
安全管理器负责两个方面的工作:
1)说明一个安全策略
2)执行这个安全策略
java安全模型的不足
无法阻止恶意移动代码不断分配内存直到内存耗尽
无法阻止恶意代码不断生成线程
其实不仅是恶意代码,我们自己写代码的时候也要避免不断分配内存和不断生成线程的现象的产生。
分享到:
- 2009-01-01 11:51
- 浏览 1269
- 评论(0)
- 论坛回复 / 浏览 (0 / 1561)
- 查看更多
相关推荐
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
### Java运行原理与Java虚拟机 #### 一、Java运行原理概述 Java作为一种跨平台的编程语言,其独特之处在于它的编译和解释过程。Java程序的执行涉及到两个主要步骤:首先是编译阶段,其次是解释执行阶段。 1. **...
java虚拟机的运行机理的详细介绍 Inside the Java Virtual Machine Bill Venners $39.95 0-07-913248-0 Inside the Java Virtual Machine Acknowledgments Introduction Part One: Java's Architecture 1 ...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
通过对Java虚拟机JVM的基本概念、架构以及内存管理机制的深入解析,我们可以更好地理解Java程序的执行过程。掌握JVM的工作原理有助于开发者编写更高效、更稳定的Java应用程序,并能有效地解决常见的内存溢出问题。
标题 "google-api-services-freebase-v1sandbox-rev46-1.17.0-rc.zip" 提供了关于 Google API 服务的信息,具体来说是 Freebase v1 sandbox 版本的 API,版本号为 rev46,使用的库是 1.17.0-rc。Freebase 是一个已...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
《藏经阁-The-Adventures-Of-Av-And-The-Leaky-Sandbox.pdf》这份文档探讨了安全领域的一个重要话题:云杀毒软件(AV)如何可能削弱企业端点的安全性。文章由Itzik Kotler和Amit Klein两位安全研究专家撰写,他们...
#Half-Life 2:Sandbox Team Andrew McWatters Henry Tran Matthew 半条命2:沙箱是对Source Engine的开源沙箱修改,它提供Lua作为脚本平台,供开发人员快速制作游戏创意原型。 简约游戏包括一个沙盒游戏模式,可...
JVM-Sandbox是一个开源项目,其核心理念是提供一个基于Java虚拟机(JVM)的实时、无侵入的面向切面编程(AOP)框架容器。它允许开发者在不修改原有代码的情况下,对运行中的Java应用进行动态的监控、拦截和处理。...
Needle in A Haystack -- Catch Multiple Zero-days Using Sandbox
1. 克隆项目:首先,你需要从存储库中克隆`Content-Security-Policy-sandbox-master`到本地。这通常通过在命令行中使用`git clone`命令完成,但这里没有提供具体的存储库URL,所以你需要自行找到并替换相应的URL。 ...
是生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。 目标人群 - 面向测试开发工程师 线上有个用户请求一直...
1. Cuckoo Sandbox:首先,你需要安装Cuckoo Sandbox的主框架。 2. Android虚拟设备(AVD)或物理设备:用于模拟Android环境。 3. ADB(Android Debug Bridge):用于与Android设备通信。 4. Python环境和相关依赖库...
在这个特定的压缩包中,只有一个文件名“java-sd-sandbox-main”,这可能是项目的主入口点或者是一个包含核心功能的模块。 在Java编程中,"main"函数是程序执行的起点,根据Java语言规范,每一个可执行的Java应用都...
Java通过将源代码编译成字节码,使得程序能够在安装了Java虚拟机(JVM)的任何操作系统上运行,这极大地提高了Java程序的移植性和通用性。 **2.2 简洁性** - **精简的语法**: Java的设计尽可能简洁明了,减少了...