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

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

1. Java安全模型

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

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

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

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

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

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

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

扫描二维码关注公众号,回复: 6390726 查看本文章

 

猜你喜欢

转载自blog.csdn.net/u013159507/article/details/85630388
今日推荐