WEB开发网
开发学院软件开发Java 基于 Java 2 运行时安全模型的线程协作 阅读

基于 Java 2 运行时安全模型的线程协作

 2009-09-20 00:00:00 来源:WEB开发网   
核心提示:在 Java 2 之前的版本,运行时的安全模型使用非常严格受限的沙箱模型(Sandbox),基于 Java 2 运行时安全模型的线程协作,读者应该熟悉,Java 不受信的 Applet 代码就是基于这个严格受限的沙箱模型来提供运行时的安全检查,其动作包括:读,写,沙箱模型的本质是,任何本地运行的代码都是受信的

在 Java 2 之前的版本,运行时的安全模型使用非常严格受限的沙箱模型(Sandbox)。读者应该熟悉,Java 不受信的 Applet 代码就是基于这个严格受限的沙箱模型来提供运行时的安全检查。沙箱模型的本质是,任何本地运行的代码都是受信的,有完全的权限来存取关键的系统资源。而对于 Applet,则属于不受信的代码,只能访问沙箱范围内有限的资源。当然,您可以通过数字签名的方式配置您的 Applet 为受信的代码,具有同本地代码一样的权限。

从 Java 2 开始,Java 提供了基于策略(Policy)与堆栈授权的运行时安全模型,它是一个更加细粒度的存取控制,易于配置与扩展,其总体的架构如图 1 所示:

图 1. Java 2 安全模型

基于 Java 2 运行时安全模型的线程协作

简单来讲,当类由类装载器(Class Loader)载入到 JVM 运行,这些运行时的类会根据 Java Policy 文件的配置,被赋予不同的权限。当这些类要访问某些系统资源(例如打开 Socket、读写文件等),或者执行某些敏感的操作(例如存取密码)时,Java 的安全管理器(ava.lang.SecuirtyManager)的检查权限方法将被调用,检查这些类是否具有必要的权限来执行该操作。

在继续深入讨论之前,我们先来澄清下面的几个概念:

策略,即系统安全策略,由用户或者管理员配置,用来配置执行代码的权限。运行时的 java.security.Policy 对象用来代表该策略文件。

权限,Java 定义了层次结构的权限对象,所有权限对象的根类是 java.security.Permission。权限的定义涉及两个核心属性:目标(Target)与动作 (Action)。例如对于文件相关的权限定义,其目标就是文件或者目录,其动作包括:读,写,删除等。

1 2 3 4 5 6  下一页

Tags:基于 Java 运行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接