JAVA沙箱安全总结WEB安全电脑资料_第1页
JAVA沙箱安全总结WEB安全电脑资料_第2页
JAVA沙箱安全总结WEB安全电脑资料_第3页
JAVA沙箱安全总结WEB安全电脑资料_第4页
JAVA沙箱安全总结WEB安全电脑资料_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络安全计算机数据本文介绍了JAVA虚拟机一些安全基础。第四部分介绍了两个著名JAVA 0day,分析了cve-xx-0507漏洞和jdk1.70day漏洞的原理。这两个漏洞在浏览器中广泛使用,自JDK 1.0以来,Java已经实现了一个沙箱环境,它主要应用于Applet,因此远程不可信代码只能在有限的环境中执行。Java沙盒安全基于Java运行时环境的三个基本方面:字节码验证器、安全管理器和类加载器。字节码验证器确保下载的代码格式正确,字节码(“Java虚拟机”指令)不违反该语言或虚拟机的安全限制(无非法数据转换),不执行指针寻址,内部堆栈不会上溢或下溢,以及字节码指令将具有正确的类型参数。

2、安全管理器在尝试执行文件输入/输出和网络输入/输出、创建新的类加载器、操作线程或线程组、在底层平台(操作系统)上启动进程、终止Java虚拟机、将非Java库(本机代码)加载到JVM、完成某种类型的窗口系统操作以及将某种类型的类加载到JVM时启动运行时访问控制。Java程序(类文件)不是本地可执行程序。运行Java程序时,首先运行JVM(Java虚拟机),然后将Java类加载到JVM中运行。负责加载Java类的部分称为类加载器。当运行一个程序时,JVM启动并运行bootstrapClassLoader,后者加载java核心应用编程接口(此时也加载了ExtClassLoader和AppClassL

3、oader),然后调用ExtClassLoader加载扩展应用编程接口,最后AppClassLoader加载类路径目录下定义的类,这是程序最基本的加载过程。SecurityManager是JAVA沙盒安全的核心部分,SecurityManager类包含大量的访问控制方法。打开安全管理器意味着程序将在沙箱环境中运行。在命令行下运行的java程序可以使用以下选项启动安全管理器。策略是指某些代码对某些资源有一定的操作权限,策略放在策略文件中,该文件包含将代码映射到权限的指令。以下是一个典型的策略文件:权限java.io.FilePermission /tmp/* ,读,写;该文件授予从lanz.si

4、naapp下载的所有代码在/tmp目录中读写文件的权限。Java平台主目录的策略文件那个。用户主目录的java.policy文件(注意文件名前的点)。权限类表示对系统资源的访问权限。下面的代码Permission实例perm表示tmp目录下的可读权限。权限集合表示权限的集合权限是权限集合的扩展,表示权限集合的集合。保护域称为安全域,相当于动态策略策略集(动态安全策略,不考虑生效的策略)权限控制器有三个目的:根据当前有效的安全策略,决定是允许还是拒绝访问关键系统资源您可以将来电者标记为特权(请参见下文中的“特权”)。在作出访问控制决定时,如果您在没有上下文参数的情况下通过调用遇到了一个特权调用方

5、,checkPermission方法将停止检查有时,应该在给定上下文中进行的安全检查实际上需要在另一个上下文中进行(例如,在工作线程中)。getContext方法和AessControlContext类是为这种情况提供的。AessControlContext是一个带有成员变量ProtectionDomain的上下文权限控制器,其主要操作是checkPermission()函数。perm.add(新的AllPermission();保护域pdomain=新的保护域(新的代码源(新的网址(“文件:/”),新的证书0),permAessControlContext a=新的aescontrolont

6、ext(新的保护域 pddomain );Java程序(类文件)不是本地可执行程序。运行Java程序时,首先运行JVM(Java虚拟机),然后将Java类加载到JVM中运行。负责加载Java类的部分称为类加载器。每个Java程序至少有三个类装入器:引导类加载器引导类加载器扩展类加载器应用程序类加载器引导类加载器负责加载系统类(通常是从JAR文件rt.jar)。它是整个虚拟机的一部分,通常用C语言实现。引导类加载器没有相应的类加载器对象。扩展类加载器用于从jre/lib/ext目录加载“标准扩展”。您可以将JAR文件放在这个目录中,这样即使没有类路径,扩展类加载器也可以在其中找到每个类。(有些人

7、建议使用这种机制来避免“可恶的类路径”,但是请查看下面提到的警告。(应用程序类加载器用于加载应用程序类。它在由类路径环境变量或-类路径命令行选项设置的类路径中的目录或JAR/ZIP文件中查找这些类。每个线程都有一个对类加载器的引用,它被称为上下文类加载器。主线程的上下文类加载器是应用程序类加载器。创建新线程时,其上下文类加载器将被设置为创建线程的上下文类加载器。因此,如果您不做任何特殊操作,所有线程都将把它们的上下文类加载器设置为应用程序类加载器。但是,我们也可以通过以下调用将其设置为任何类加载器线程t=线程.当前线程();t.setContextClassLoader(加载程序);然后助手方

8、法可以获得上下文类加载器:线程t=线程.当前线程();class Loader=t . GetContextClassLoader();CLaSS cl=loader . LoAdCLaSS(CLaSS NAmE);如果您想要编写自己的类加载器,您只需要继承类加载器类,然后重写以下方法查找类(字符串类名)在类装入器中装入类的几种重要方法;GetParent()返回此类加载器的父类加载器。loadClass(字符串名称)加载一个名为name的类,返回的结果是java.lang.Class类的一个实例。查找一个名为名称的类,返回的结果是一个java.lang.Class的实例查找加载的类名,返回的

9、结果是一个java.lang.Class的实例定义类(字符串名称,字节 b,int off,int len)将字节数组b的内容转换为Java类。抛出ClassNotFoundException/首先检查是否加载了该名称指定的类。c类=findLoadedClass(名称);if (c=null) 尝试如果(家长!=null) /如果父级不为空,则调用父级的loadClass进行加载c=parent.loadClass(name,false);其他/如果/parent为空,则调用BootstrapClassLoader进行加载c=findBootstrapClass0(名称); catch(Cl

10、assNotFoundException e)/如果它仍然无法成功加载,请调用它自己的findClass来加载c=findClass(名称);如果(解决)(c)决议;返回c;当JVM加载一个类时,它需要经历三个步骤:加载、链接和初始化。加载就是找到相应的类文件,把它读入JVM,更不用说初始化了,但主要是谈连接。连接分为三个步骤,第一步是验证类是否满足规范,第二步是准备,即为类变量分配内存并设置默认初始值,第三步是解释,这是可选的。根据上述loadClass方法的第二个参数确定是否需要解释。书深入JVM将所谓的解释定义为根据类中的符号引用找到相应实体,然后用直接引用替换符号引用的过程。通过loa

11、dClass加载类实际上意味着类在加载时不会被解释,因此不会被初始化。相反,类类的forName方法将在加载forName时解释和初始化类其核心代码如下:StringBuilder LocalStringBuilder=新StringBuilder();for(int I=0;i arrayOfString.lengthI)LocalStringBuilder . append(ArrayofStringI);objectinputStream LocalObjectInputStream=new ObjectInputStream(new BytearrayInputStream(StringToBytes(LocalStringBuilder . ToString();对象数组对象=(对象)(对象)本地对象输出流。读取对象();帮助数组帮助=(帮助)(帮助)数组对象0;原子引用数组本地原子引用数组=(原子引用数组)数组对象1;CLaSS Loader LocalCLaSS Loader=GetCLaSS()。GetClassLoader();LocalatomicReferenceArray . set(0,LocalClassLoader);帮助. DoWork(arrayofHelp0);在代码中,arrayOfS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论