Java安全模型简介

作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到 Java 语言的设计 与实现。可以说 Java 在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响。

本篇文章中将介绍 Java 中安全模型,以及如何利用安全访问控制机制来实现一些特定目的。

Java 中的安全模型

在 Java 中将执行程序分成本地和远程两种,本地代码默认视为可信任的,而远程代码则被看作是不受信的。对于授信 的本地代码,可以访问一切本地资源。而对于非授信的远程代码在早期的 Java 实现中,安全依赖于沙箱 (Sandbox) 机制 。沙箱机制就是将 Java 代码限定在虚拟机 (JVM) 特定的运行范围中,并且严格限制代码对本地系统的资源访问,通过这 样的措施来保证对远程代码的有效隔离,防止对本地系统造成破坏。如图 1 所示,

图 1.JDK1.0 安全模型

但如此严格的安全机制也给程序的功能扩展带来障碍,比如当用户希望远程代码访问本地系统的文件时候,就无 法实现。因此在后续的 Java1.1 版本中,针对安全机制做了改进,增加了安全策略,允许用户指定代码对本地资源的访问 权限。如图 2 所示,

图 2.JDK1.1 安全模型

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

图 3.JDK1.2 安全模型

时间: 2024-09-13 02:02:00

Java安全模型简介的相关文章

CICS Java环境简介

简介 IBM CICS 的优势之一是它支持多种编程语言,并允许您将它们混合到一个应用程序中.但是,如果基于 CICS 的应用程序仅使用 Java,而您想要利用各种 CICS Java 环境的优势.当在 CICS 程序之间传递数据时,通常会将数 据放在面向字段的系列字节结构中,以便用任何语言编写的应用程序都能够访问这些数据.但是,如果您只使用 Java 语言 ,则最好将数据放在面向对象的 Java 环境中,并在基于 CISS 的 Java 程序之间传递 Java 数据对象.本系列文章将讨论 CIC

Java异常简介及其架构

Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性.在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了"什么"被抛出,异常堆栈跟踪回答了"在哪"抛出,异常信息回答了"为什么"会抛出. Java异常机制用到的几个关键字:try.catch.finally.throw.thro

《大规模Java平台虚拟化与调优》——第1章 大规模Java平台简介1.1 大规模Java平台的分类

第1章 大规模Java平台简介 本章定义了3类大规模的Java平台: 第1类:大量的Java虚拟机(Java Virtual Machine,JVM)(100-1000个JVM). 第2类:JVM的数量较少但是堆很大. 第3类:前两类的组合,其中第1类使用的数据来源于第2类的平台之中. 除此之外,本章还讨论了各种趋势,并且大致描述了一些技术性的考量因素,以帮助你理解设计大规模Java平台时与之相关的技术问题. 1.1 大规模Java平台的分类 基于与客户的交流,大规模的Java平台主要可以分为如

Java安全模型框架:安全访问控制的使用

作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到 Java 语言的设计与实现.可以说 Java 在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响. 本篇文章中将介绍 Java 中安全模型,以及如何利用安全http://www.aliyun.com/zixun/aggregation/38609.html">访问控

java el简介及用法_java

一.EL简介 1.语法结构 ${expression} 2.[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 [].例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值.例如: ${sessionScope.user[data]}中data 是一个变量 3.变量 EL存取变量数据的方法很简单,例如:${us

java线程简介 -共享对数据的访问

共享变量 要使多个线程在一个程序中有用,它们必须有某种方法可以互相通信或共享它们的结果. 让线程共享其结果的最简单方法是使用共享变量.它们还应该使用同步来确保值从一个线程正确传播到另一个线程,以及防止当一个线程正在更新一些相关数据项时,另一个线程看到不一致的中间结果. 线程基础中计算素数的示例使用了一个共享布尔变量,用于表示指定的时间段已经过去了.这说明了在线程间共享数据最简单的形式是:轮询共享变量以查看另一个线程是否已经完成执行某项任务. 存在于同一个内存空间中的所有线程 正如前面讨论过的,线

Java多线程简介

      在多任务操作系统中,多进程实现了多任务的并发执行,进程的多线程实现了进程中代码块(线程)的并发执行.       例如:多进程:我要使用qq聊天,又要使用firefox进行上网,还要进行java编程,这儿进启动了三个进程,实现3我要的三个任务,并且同时执行中.       例如:多线程:当用qq聊天的时候,我们同时和5个人进行聊天,那么有6(qq本身为一个线程)个对应的线程,同时进行处理5人同时聊天.       进程:运行中的程序,或者是执行的一组代码集合.       线程:程序

java多线程编程之java线程简介_java

一.线程概述 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点.因此,在操作系统中运行的任何程序都至少有一个主线程.进程和线程是现代操作系统中两个必不可少的运行模型.在操作系统中可以有多个进程,这些进程包括系统进程(由操作系统内部建立的进程)和用户进程(由用户程序建立的进程):一个进程中可以有一个或多个线程.进程和进程之间不共享内存

Java设计模式之责任链模式简介_java

对于使用过宏的朋友应该知道,利用宏可以实现一个键绑定多个技能.例如如果排在前面的技能有CD,则跳过此技能,执行之后的技能.记得曾经玩DK,打怪的时候,就是用一个键,一直按就行了.在servlet里的doGet和doPost方法,我们一般都把doGet请求发动到doPost里来处理,这也是一种责任链的模式. 这里,有个宏,绑定了"冰血冷脉"和"寒冰箭"两个技能,程序实例如下所示: package responsibility; /** * DOC 技能接口,要绑定的技