java安全控制-简单概念的介绍与实现

Java作为互联网兴起时代的语言,从一开始Java就带有安全性的考虑:如何保证通过互联网下载到本地的Java程序是安全的,如何对Java程序访问本地资源权限进行有效授权,这些安全角度的考虑一开始就影响到Java语言的设计与实现。

1. Java安全模型

在java中执行程序分为本地和远程,本地代码默认视为信任,而远程代码被看作不可信的。对于本地代码,可以访问一切的本地资源,而在早期的Java实现中,安全依赖于沙箱(Sandbox)机制。

沙箱机制就是将Java代码限定在虚拟机(JVM)特定运行范围,严格限制代码对本地资源的访问,通过这样的措施保证对远程代码的有效隔离,防止对本地系统造成破坏。

在JDK1.0中,安全模型如下图所示:

具有以下缺点:该安全模型的安全机制给程序的功能扩展带来障碍,比如用户希望远程代码访问本地系统的文件时候,就无法实现。

在后续的JDK1.1版本中,针对安全机制的缺点增加了安全策略,允许用户指定代码对本地资源的访问权限,如下图所示:

在JDK1.2版本中,再次改进安全机制,增加了代码签名。不论本地代码还是远程代码,都需要按照用户的安全策略设定,由类加载器加载到虚拟机不同的运行环境中,来实现差异化的代码执行权限控制。如下图所示:

在当前的安全机制的实现中,引入了域(Domain)的概念,虚拟机会把所有的代码加载到不同的系统域(负责与关键资源交互)和应用域(部分负责通过系统域的部分代理来对各种需要的资源进行访问)中 。虚拟机中不同的受保护域,对应不同的权限。因此存在不同域中的类文件就具有了当前域的全部权限。如下图所示:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值