Java安全模型的核心——Java沙箱(sandbox),沙箱机制就是将Java代码限定在JVM特定的运行范围中,并且严格限制代码对本地系统资源访问,以此保证对代码的有效隔离,防止对本地系统造成破坏。
沙箱的基本组件:
1、字节码校验器(bytecode verifier):确保Java类文件遵循Java语言规范,帮助Java程序实现内存保护,但并不是所有的类文件都会经过字节码校验,如:核心类。
2、类装载器(class loader):在3个方面对Java沙箱起作用
- 防止恶意代码干涉正常的代码
- 守护被信任的类库边界
- 将代码归入保护域,确定代码可以进行哪些操作
虚拟机为不同的类加载器载入的类提供不同的命名空间,命名空间由一系列唯一的名称组成。
类装载器采用双亲委派机制:
1、从最内层JVM自带类加载器开始加载,外层恶意同名类得不到加载从而无法使用
2、严格通过包来区分访问域(外层恶意的类通过内置代码也无法获得权限访问到内层类)
存取控制器(access controller)
:控制核心API对操作系统的存取权限,同时控制策略的设定可以由用户指定安全管理器(security manager)
:是核心API和操作系统之间的主要接口。实现权限控制,比存取控制器优先级高安全软件包(security package):java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全性,包括:
- 安全提供者
- 消息摘要
- 数字签名
- 加密
- 鉴别
评论 (0)