java沙盒安全架构总结
2011-12-07 21:23
204 查看
java沙盒安全架构总结
最近因项目需要,较深入了研究了下java的沙盒机制,相当强大。官方的安全架构、权限说明以及api文档中信息非常详细。研究后简单总结下。Java的沙盒机制主要根据代码的url(位置)和签名为其赋予不同的权限,jdk中已对系统敏感性操作都会提前检测权限,如线程创建,文件系统读写等,从而可以构建出运行于JVM的各种不同的沙盒环境。java内建的沙盒机制非常灵活和强大。
1、权限授予方有三个:
1)Policy 对象:开始时根据策略文件等初始化的一个策略对象,可以根据code的url位置和签名赋予不同权限。2)URLCloader(SecureClassLoader):动态的根据codeSource(url和签名)赋予不同权限,这个权限根据实现方式可以累加到policy赋予的权限(默认的URLClassLoader实现就是这样),也可以特殊处理。
3)SecurityManager,在进行权限检测前,可以定制,添加一些强制的权限检测,并可以选择是否使用默认的权限检测机制。SecurityManager是权限检测的入口。
2、权限的组织方式
一个类的权限是其所属保护域所具备的权限,主要要codeSource、ClassLoader、原则列表(较少用到)决定。具体权限授予的原则上面已介绍。3、运行时权限检测的原则:
由AccessController中的权限检测算法决定,在基于已有的保护域的权限的基础上,对于多个类递归调用时涉及到多个保护域的情况下的相应代码的运行时权限的计算策略:1)调用链上,执行代码权限为所有调用者权限的合集,即递归调用者都具备相应代码所需权限时,才能执行。
2)原则1)唯一的例外,是特权代码,在特权代码中,只要特权代码的所有者有相应权限就可执行该代码,无需调用者具备相应代码的权限。(例如用内部库需要临时文件权限的情况,调用者就无需赋予库临时文件的权限)
3)AccessControlContext这个动态权限检测所需的环境上下文在起子线程时,会被子线程集成。即子线程中执行某段代码时,即检查子线程的上下文调用者的权限,也检测父线程调用者的权限。
4)可以将AccessControlContext传递给与当前发起请求的线程独立的响应请求的线程,以便响应线程检测发起请求的线程中的调用者是否具备响应线程内要执行的代码的权限。
相关文章推荐
- java安全架构____数字证书证书类型总结
- javashop技术培训总结,架构介绍,Eop核心机制
- 【Java 安全技术探索之路系列:J2SE安全架构】之四:字节码验证器
- java线程安全总结
- 【Java安全技术探索之路系列:Java可扩展安全架构】之九:JCP(二):JCP类和接口
- java线程安全总结(二)
- java安全架构____X.509原理
- java安全架构____RSA加密解密
- 基于java技术的软件开发架构总结
- 基于java的安全架构浅析
- JAVA程序员面试总结,Java 学习架构进阶学习规划
- Java安全结构“沙盒”模型4个组成部分
- 【Java安全技术探索之路系列:Java可扩展安全架构】之五:JCE(一):JCE架构介绍
- 基于java技术的软件开发架构总结
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十:JCP(三):JCP编程模型
- java编码安全总结
- java线程安全总结(一)
- 使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器
- java线程安全总结
- java安全架构____对称加密和非对称加密区别(对称秘钥,非对称秘钥)