沙箱模型成就了java的安全性,沙箱基本组件有:
类装载器结构
class文件检验器
jvm和java语言本身具有的安全特性
安全管理器和java API
不同的类装载器装载的类具有不同的命名空间,jvm维护这个命名空间,同一个命名空间里不可能有两个相同名字的类。同一个命名空间里的类可以直接进行交互,不同命名空间的则不行,除非显示提供允许他们交互的机制。
用户自定义的类装载器通常需要依赖其他装载器,至少要依赖jvm刚启动时创建的启动类装载器。类装载器请求另一个类装载器来装载类型,这个过程被叫做
双亲委派模式。也就是说,出了启动类装载器,其他装载器都有一个“双亲”类装载器。当特定的装载器需要装载一个类型时,会默认将这个任务“委派”给它的双亲,委派的过程一直向上继续,直到启动类装载器(装载了核心的java API的class文件)。如果一个类装载器的双亲类装载器有能力装载这个类型,则双亲装载器返回这个类型,否则,这个类装载器自己装载。
还有一个
运行时包的概念,指的是同一个类装载器装载,属于同一个包的多个类型的集合。比如,用户的类装载器装载了一个java.lang.Virus的类(假设是一个有害类)前面说到同一个命名空间的类可以直接进行交互,那这个类可以得到java.lang这个包的访问权限吗?肯定是不能的,因为他们不是一个运行时包。
我们也可以简单的通过拒绝装载特定的类型来保护被信任的类库(启动类装载器的java API)的边界。我们可以编写自己的装载器,让它做的第一件事就是确保这个类不是某个被禁止包的成员。这样的类如果请求被装载,我们的类转载器就会抛出安全异常,而不是向上委派。
class文件检验器通过进行四趟独立的扫描来完成任务。第一次是类被装载时进行的,主要检查内部结构,看是否能通过编译;第二和第三是在连接过程中进行,确定数据类型是否遵守java的语义,包括检查字节码的完整性;第四趟是在动态连接的过程中解析符号引用时进行,主要确认被引用的类,方法和字段确实存在。
jvm装载了一个类,并对他进行了三趟的class文件检验,这些字节码就可以运行了。除了对符号引用的检验,jvm还会进行一些其他的内在安全机制的操作。
*类型安全的引用转换
*结构化的内存访问
*自动垃圾收集
*数组边界检查
*空引用检查
这些jvm的特性都能保证java程序的健壮性。
安全管理器主要是保护jvm的外部资源不被内部运行的恶意或有漏洞的代码侵犯,定义了沙箱的外部边界,是用户可自定制的。安全管理器主要负责两个任务:说明一个安全策略以及执行这个策略。安全策略指明了哪种代码能执行哪种操作,由安全管理器中的‘check’方法定义。当他们被调用时,这个策略将被这个’check‘方法所实施。
另外,java安全模型很重要的一点是支持认证。认证功能加强了用户的能力,使用户能够通过一个沙箱建立多种安全策略,这个沙箱可以依赖于为这个代码提供担保的对象来改变。这样,能够一定程度上简化沙箱对代码的限制。
分享到:
相关推荐
综上所述,Java沙箱安全模型通过类装载器、类文件校验器以及Java虚拟机自身的安全特性,构建了一个多层防护的安全体系。这些机制相互配合,共同确保了Java应用程序的安全性和稳定性。通过对沙箱模型的理解,开发者...
在Flash中,沙箱分为两种主要类型:沙箱安全模型和内容安全策略。 1. **沙箱安全模型**: - **本地沙箱**:本地沙箱的SWF文件可以从用户的本地文件系统加载,但权限受到严格限制,例如不能访问网络或读写用户文件...
Flash安全沙箱是一种安全模型,它为Flash应用程序提供了一个受限制的运行环境。这个环境限制了代码可以访问和操作的系统资源,确保了内容的安全性。Flash主要包含三种类型的沙箱:本地沙箱、网络沙箱和外部应用程序...
域名来源策略是沙箱安全模型的一个重要组成部分,它根据内容的来源决定其权限。只有来自同一域名的Flash内容才能自由通信,其他来源的内容必须通过显式权限设置才能进行数据交换。 ### 默认权限 Flash Player为...
沙箱模型类似于浏览器的同源策略,确保不同来源的内容不会未经授权地相互交互。 Flex安全沙箱主要分为两类:远程沙箱和本地沙箱。 1. **远程沙箱**: 远程沙箱用于管理从互联网加载的Flex应用。它遵循严格的同源...
2. **沙箱机制**:Flash Player采用沙箱安全模型,将内容限制在一个隔离的环境中运行,防止它们对操作系统造成损害。用户可以通过工具检查和调整沙箱设置,确保安全。 3. **更新管理**:保持Flash Player最新版本至...
为了确保网络通信的安全性,Flash Player和Flex采用了一种称为“沙箱”的安全模型来限制不同来源的应用程序之间相互访问的能力。这种模型的核心是基于跨域策略文件(Cross-Domain Policy File),即**crossdomain....
综上所述,处理 Flash 安全沙箱问题涉及理解沙箱模型、设置跨域策略、实现安全通信接口、管理权限、代码签名、异常处理以及遵循安全编码实践等多个方面。开发者需要在 Java, C# 和 Delphi 中综合运用这些技术来创建...
Java入门是一个系统的学习过程,涉及多个方面,包括Java的基本概念、优点、开发环境搭建、基本语法、数据类型...安全性:Java具有强大的安全性特性,包括沙箱安全模型、字节码验证和安全类加载等机制,可以防止恶意代码
3. **安全性**:JVM提供了沙箱安全模型,确保运行中的Java程序不会对操作系统造成损害。 #### 二、JVM内存模型详解 JVM内存模型主要包括以下几个部分: 1. **程序计数器(Program Counter Register)**:当前线程所...
10. **沙箱安全模型**:Firefox使用沙箱安全模型,每个标签页都在独立的进程中运行,这样即使一个网站崩溃,其他标签页也不会受到影响。 总之,Firefox 5.0b7.dmg安装包提供了Mac用户尝试Firefox早期版本的机会,...
为了提高安全性,IE11采用了更为严格的沙箱安全模型。每个标签页都运行在安全的环境中,即使一个页面受到攻击,也不会影响到其他页面或者操作系统本身。 **4. 增强的隐私保护** IE11提供了InPrivate浏览模式,用户...
2. **沙箱安全模型**:Chrome的沙箱安全模型是其核心安全特性之一。在3.0版本中,每个标签页都在独立的进程中运行,这使得一个恶意网站无法影响到其他打开的页面,降低了安全风险。 3. **多进程架构**:谷歌浏览器...
JVM通过沙箱安全模型(Sandbox Security Model)、访问控制、异常处理等方式保证程序的安全性和稳定性。例如,沙箱安全模型限制了Java程序只能访问特定的系统资源,从而防止恶意代码对系统造成破坏。 通过深入学习...
此外,Java有严格的代码安全性检测,从早期的沙箱安全模型逐步发展到更复杂的阈管理方式的安全模型,保障了代码的执行安全。 Java的开发编译环境主要由JDK(Java Development Kit)提供,包括编译器javac、解释器...
4. **沙箱机制**:Chrome采用了沙箱安全模型,每个浏览器进程都在自己的安全环境中运行,限制了恶意代码对系统资源的访问,降低了被黑客攻击的风险。 5. **自动更新**:Chrome具有自动更新功能,能够定期检查并安装...
1. **安全性和沙箱模型**:Chrome浏览器基于强大的沙箱安全模型运行,这意味着默认情况下,它不支持ActiveX或OCX插件,因为这些插件可能引入安全风险。因此,为了使OCX插件能够在Chrome中运行,需要进行额外的配置或...
解决这些问题通常需要理解安全模型并调整代码,例如使用安全URL或引导用户授予许可。 4. **安全策略文件** 当本地内容需要访问远程资源时,可以通过在服务器上放置一个安全策略文件来放宽限制。这个文件告诉Flash ...
2. **安全模型**:由于Applet运行在用户的计算机上,因此Java引入了一套严格的沙箱安全模型,限制了Applet可以执行的操作,以防止恶意代码对用户系统造成损害。默认情况下,Applet只能访问它自己的类路径资源,不能...