1.沙箱机制的概念Java安全模型的核心是Java沙箱(sandbox)。沙盒机制是将Java代码限制在虚拟JVM虚拟机中的特定运行范围内,严格限制代码对本地系统资源的访问。这样就有效隔离了Java代码,防止了本地操作系统。破坏。2、沙箱的作用主要是限制对系统资源(CPU、内存、文件系统、网络)的访问。不同级别的沙箱对系统资源的访问也有不同的限制。3、本地代码和远程代码Java执行程序分为:本地代码和远程代码。,本地代码:默认情况下,它被认为是可信的,可以访问所有本地资源。远程代码:被认为是不受信任的。对于可信的本地代码,以及在Java早期实现中对于不可信的远程代码,安全依赖于沙箱(Sandbox)机制。4、沙箱安全机制模型4.1JDK1.0安全模型JDK1.0安全模型本地代码可以访问系统资源,远程代码不能访问系统资源。例如,当用户想要远程代码访问本地系统中的文件时,就无法实现。4.2JDK1.1安全模型在JDK1.1安全模型版本中,完善了安全机制,增加了可信安全策略,允许用户指定代码对本地资源的访问权限。4.3JDK1.2安全模型JDK1.2安全模型改进增加了安全机制,增加了代码签名。无论是本地代码还是远程代码,都根据用户的安全策略统一设置,由类加载器加载到不同权限的虚拟机运行空间,从而实现差异化的代码执行权限控制。4.4最新的安全模型最新的安全模型引入了域的概念。JVM虚拟机将所有代码加载到不同的系统域和应用程序域中。系统域部分负责与关键资源系统进行交互,每个应用域部分使用系统域中的一些代理来微调所需的各种资源。然后可以访问该分区。JVM虚拟机中不同的保护域(ProtectedDomain)对应不同的权限(Permission)。存在于不同域中的类文件具有它包含的应用程序域的所有可访问资源的总和。5.沙箱安全机制的基本组成5.1字节码验证器(bytecodeverifier)确保lava类文件遵循lava语言规范。这可以帮助Java程序实现内存保护。但并不是所有的类文件都会进行字节码校验,比如核心类。5.2类加载器(classloader)防止恶意代码干扰善意代码,例如:双亲委托机制守卫可信类库边界;将代码划入保护域,确定在代码的权限范围内可以进行哪些资源操作5.3访问控制器(accesscontroller)访问控制器可以控制核心API对操作系统的访问权限,用户可以设置控制策略。5.4安全管理器(securitymanager)安全管理器主要是核心API和操作系统之间的主要接口。例如,权限控制的实现比访问控制器具有更高的优先级。5.5安全包(securitypackage):java.security下的类和扩展包下的类允许用户为应用程序添加所需的安全特性:securityprovider、messagedigest、digitalsignaturekeytools、encryption、authentication。
