五,安全管理器

沙箱的实现包括三个方面:

1,安全管理器

2,存取控制器

3,类装载器


我们首先看看安全管理器:

一,安全管理器的作用

确定能否执行某项操作。在默认沙箱一章中介绍了策略文件,策略文件中所有的策略都是有安全管理器负责管理的。

注意:

java2之后,存取控制器出现,作用和安全管理器一样,导致目前存取控制器和安全控制器并存。作者认为,存取控制器出现是对安全管理器的补充和完善,java1.1中并没有策略文件,安全管理器的内部逻辑经常会改动才能满足实际的安全需要,存取控制器让安全配置转移到了策略文件,因此存取控制器让安全配置更为灵活(更用户化了!)。

另外,如果你的应用没有java1.1代码,那么存取控制器可以取代安全管理器。


二,安全管理器和JAVA API

java.lang.SecurityManager为其他java api提供了接口。

我们可以认为安全管理器是java api和资源之间的中间机构。

例子,FileInputStream 流对象构造代码

public FileInputStream(String name) throws FileNotFoundException{
       SecurityManager security = System.getSecurityManager();
       if(security!=null){
             security.checkRead(name);
       }
       try{
             open(name);
       }catch(IOException e){throw FileNotFoundException(name)}
}


FileInputStream是一个JAVA API,实例化时(创建文件流时)总是询问:

---系统是否启用了安全管理器?

---如果启用,判断是否能建立文件流?

我们可以看出,安全管理器就是一个保护资源的界面,如果启用,api就只能先通过他的权限策略验证后,才能获取到资源




三、安全管理器的操作

在system中,只有一个安全管理器,我们可以设置或获取系统的安全管理器

SecurityManager sm =  System.getSecurityManager();
		
System.setSecurityManager(sm);

安全管理器的方法请参考api文档,方法与java的权限是对应的


1,我们自定义的类一样可以利用安全管理器;java核心API总是会访问安全管理器

2,我们可以修改或添加策略和文件,我们很难重载安全管理器

3,安全管理器是唯一的,所有的方法都是静态的





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值