`

java 安全沙箱模型 转载自galaxystar.javaeye.com

阅读更多

http://galaxystar.iteye.com/blog/225615

java 安全沙箱模型

起到第一道安全保障作用的"双亲委派类加载模型"

双亲委派方式的类加载,指的是优先从顶层启动类加载器开始,自顶向下的方式加载类的模型(参见第一条类装载器体系结构)。

这种模型的好处是,底层的类装载器装载的类无法与顶层类装载器装载的类相互调用。
哪怕是同包下的类,只要他们不属于同一类装载器,都是相互隔绝的。这对一些有安全隐患的类起到了安全隔离的作用。使它不能冒充系统类来破坏程序正常运作。

此外,不同的类装载器,也有自己的类装载范围。比如启动类装载器,它只会装在jdk/lib目录下的包/类,因此,系统级的类是相对安全的。
 
 

class文件校验器,通过四趟扫描,保证了class文件正确

第一趟是,检查class文件的结构是否正确。比较典型的就是,检查class文件是否以魔数OxCAFEBABE打头。
通过这趟检查,可以过滤掉大部分可能损坏的,或者压根就不是class的文件,来冒充装载。
 
第二趟是,检查它是否符合java语言特性里的编译规则。比如发现一个类的超类不是Object,就抛出异常。
 
第三趟是,检查字节码是否能被JVM安全的执行,而不会导致JVM崩溃。这里提到了一个停机的问题。内容是这样的,“即不可能写出一个程序,用它来判定作为其输入而读入的某个程序,是否会停机”。意思是,不可能写一个程序,让它告诉你,另外一个程序会不会中断或崩溃。
 
第四趟是,符号引用验证。一个类文件,它会包含它引用的其他类的全名和描述符,并跟他们建立符号引用(一种虚拟的,非物理连接的方式)。当程序第一次执行到需要符号引用的位置时,jvm会检查这个符号链接的正确性,然后建立真正的物理引用(直接引用)。
 

jvm类型安全特性

这些都是基础的java语言特性,他们降低了java程序出现内存混乱,崩溃的几率。
  • 结构化内存访问(不使用指针,一定程度上让黑客无法篡改内存数据)
  • 自动垃圾收集
  • 数组边界检查
  • 空引用检查
  • 数据类型安全
 

Java api的安全管理器 securityManager

这是安全沙箱中,离我们程序员最接近的一环。
securityMananger,是一个api级别的,可自定义的安全策略管理器,它深入到java api中,在各处都可以见到它的身影。比如SecurityClassLoader。
 
默认情况下,java应用程序是不设置 securityManager 实例的(意味着不会起到安全检查),这个实例需要我们在程序启动时通过 System.setSecurityManager 来设置。
 
一般情况下,检查权限是,通过 SecurityManager.checkPermission(Permission perm) 来完成的。外部程序通过,创建Permission实例,传递给前面的check。
 
Permission是一个抽象类,需要继承它实现不同的权限验证,比如 FilePermission,代表对某个文件的读写权限。
new FilePermission("test.txt", "read")
你可以将这个实例,扔给 SecurityManager,检查是否可读text.txt这个文件。
 

java签名/证书机制

java签名/证书机制,可以保障使用者,安全地调用外部提供的jar,防止你信任的jar被篡改。
 
首先,java的签名,必须是基于jar包的。也就是说,你必须将你要提供的class,打包到jar里。
然后,通过 java 提供的签名工具(jarsigner)对jar包进行签名,发布。
 
签名原理:
使用非对称算法,生成一对公钥/私钥。
 
证书
证书是在签名基础上,对签名值,再进一步做一次加密。而这次加密使用的私钥和公钥都是证书机构提供的。
这种方式,是为了防止,有些恶意用户,在公钥发到你手上前,就对其做了手脚,然后再发一个动过手脚的jar给你,用动过手脚的公钥解动过手脚的jar包,是可以解开的。
而使用证书后,它会对已经加密的签名值,再做一层加密,这样,到你手里,你只需要通过证书机构的公钥进行解密,然后再用jar包发布者的公钥解密就行了。(只能在一定程度上,提供一些安全性)
分享到:
评论

相关推荐

    基于安全云架构的虚拟沙箱的设计与实现.pdf

    基于安全云架构的虚拟沙箱的设计与实现.pdf

    基于沙箱的Java安全体系结构

    综上所述,Java沙箱安全模型通过类装载器、类文件校验器以及Java虚拟机自身的安全特性,构建了一个多层防护的安全体系。这些机制相互配合,共同确保了Java应用程序的安全性和稳定性。通过对沙箱模型的理解,开发者...

    沙箱支付+签名工具.zip

    综上所述,这个"沙箱支付+签名工具.zip"包涵盖了支付宝开发的关键组件,包括安全的沙箱测试环境和签名工具,以及与Tomcat服务器的集成。对于正在从事支付宝接口开发的人员,掌握这些知识点和工具的使用,能够有效地...

    Java安全相关知识共9页.pdf.zip

    1. **Java安全模型**:Java的安全模型基于沙箱机制,它限制了代码执行时可以访问的资源。这种模型通过类加载器、安全策略和权限管理来实现,以确保只有经过验证的代码才能运行。 2. **Java安全框架**:Java提供了...

    Prentice.Hall.Core.Java.Volume.2.Advanced.Features.8th.Edition.

    12. **Java安全模型**:讲述了Java的安全架构,包括权限、策略文件和沙箱模型,以及如何编写安全的Java应用程序。 此外,书中还包含了大量示例代码和练习题,帮助读者巩固理论知识并将其付诸实践。通过学习这本书,...

    关于java安全的程序和文档3.rar_white

    Java的安全模型建立在“沙箱”理念上,它旨在限制代码执行时可能造成的潜在危害。Java虚拟机(JVM)在运行未经信任的代码时,会强制执行一套安全策略,防止恶意代码对系统造成破坏。这一模型的核心包括类加载器、...

    1115106220002367x8沙箱纯净版 v0.7.6.4.03-64cn 安卓版.apk

    1115106220002367x8沙箱纯净版 v0.7.6.4.03-64cn 安卓版.apk

    java_springboot电影院售票座位管理系统 沙箱支付_毕业论文.docx

    java_springboot电影院售票座位管理系统 沙箱支付_毕业论文.docx

    java和as3 socket通信 解决安全沙箱问题

    总结来说,Java和AS3间的Socket通信涉及创建服务器和客户端Socket实例,处理数据流,并解决Flash Player的安全沙箱限制。通过合理的编程实践和配置,你可以实现可靠的跨平台通信,从而构建高性能的实时应用。

    沙箱多开 (2).apk

    沙箱多开 (2).apk

    关于java安全的程序和文档2.rar_java 安全

    Java的安全模型基于沙箱机制,限制了代码(尤其是来自不可信源的代码)对系统资源的访问。Java安全框架包括安全管理器(Security Manager)、类加载器(Class Loaders)以及权限(Permissions)。安全管理器是实现细...

    基于多安全机制的Linux应用沙箱的设计与实现.pdf

    "基于多安全机制的Linux应用沙箱的设计与实现" Linux 操作系统中,沙箱机制是提供了一种独立的运行环境,保护用户和系统的安全性。本文设计的基于多安全机制的Linux应用沙箱,提供了文件系统隔离、系统资源隔离、...

    SANGFOR_EMM_v7.6.7R2_CONF_普通沙箱配置指导for Android.pdf

    SANGFOR_EMM_v7.6.7R2_CONF_普通沙箱配置指导for Android.pdf

    [数据安全]Java生态圈沙箱逃逸实战.zip

    "Java生态圈沙箱逃逸实战"的主题聚焦于如何保护Java应用程序免受恶意攻击,以及攻击者如何尝试绕过安全机制进行沙箱逃逸。沙箱是一种安全机制,用于限制代码执行权限,防止不受信任的代码对系统造成破坏。 首先,...

    java ,c#,delphi 解决flash安全沙箱问题

    当我们面临“Java, C#, Delphi 解决 Flash 安全沙箱问题”的场景时,这意味着我们需要在这些编程语言中处理与 Flash 沙箱相关的安全问题,以确保应用程序的安全性和合规性。 首先,让我们深入了解一下 Flash 的安全...

    SANGFOR_EMM_v7.6.7R2_CONF_增强沙箱配置指导for Android.pdf

    SANGFOR_EMM_v7.6.7R2_CONF_增强沙箱配置指导for Android.pdf

    Java应用程序的安全性研究.zip

    1. **Java安全模型**:Java的安全模型是基于类沙箱的,它通过Java虚拟机(JVM)为代码执行提供了一个受限制的环境。每个运行的Java应用程序都在其自己的安全上下文中运行,防止恶意代码对系统资源造成破坏。安全模型...

    flash安全沙箱汇总

    Flash安全沙箱是一种安全模型,它为Flash应用程序提供了一个受限制的运行环境。这个环境限制了代码可以访问和操作的系统资源,确保了内容的安全性。Flash主要包含三种类型的沙箱:本地沙箱、网络沙箱和外部应用程序...

    基于沙箱的威胁情报输出.pdf

    在网络安全领域,沙箱技术是一种重要的动态分析手段,它通过在隔离的环境中模拟程序运行,来发现潜在的恶意行为和威胁。基于沙箱的威胁情报输出则是利用这种技术,将收集到的数据转化为有价值的情报,从而提高网络...

Global site tag (gtag.js) - Google Analytics