| 网站首页 | 测试咨讯 | 新手入门 | 专注性能 | 测试技术 | 测试管理 | 测试工具 | 开发社区 | 工具下载 | 资料下载 | 测试论坛 | 

[CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523

新手入门
 入门指南
 经验之谈
测试咨讯
 行业新闻
 网站动态
 人才就业
 CNTester基金
 标准规范
专注性能
 性能测试知识
 性能测试工具
 程序设计性能
 数据库性能
 Web应用服务器性能
 操作系统性能
 服务器与网络性能
测试技术
 用例设计
 性能测试
 自动化测试
 Web测试
 面向对象测试
 综合技术
 阶段性测试
 行业类测试
测试管理
 项目管理
 项目案例
 质量管理
 软件过程
测试工具
 Mercury系列
 Rational系列
 测试管理工具
 性能测试工具
 功能测试工具
 单元测试工具
 其它测试工具
开发社区
 Java技术
 DotNet技术
 C技术
 数据库技术
 操作系统
 服务器与中间件
工具下载
 测试工具
 开发工具
 企业工程
 网络通信
 媒体桌面
 游戏娱乐
 其他工具
资料下载
 测试资料
 程序设计
 数据库
 操作系统
 应用服务器
 电子期刊
 其他资料
 
 
您现在的位置: 中国测试员网站 >> 测试技术 >> 综合技术 >> 安全性 >> 文章正文
  [组图]Java 安全的演进       ★★★ 【字体:
Java 安全的演进
作者:Larry Koved ,A…    文章来源:IBM DEV    点击数:    更新时间:2007-7-26    
这篇论文提供了 Java 安全发展和演进的高级概述。Java 是一项日趋成熟的技术,它从作为一种基于浏览器的脚本编制工具的商业起源演进而来。我们探讨了以 Java 为目标的不同部署环境、Java 运行时的一些特征、这种基本技术当前发行版中的安全功能、新的 Java Development Kit(JDK)1.2 的基于策略的安全模型、基于堆栈的授权安全模型的局限性、通用的安全要求以及 Java 安全将来可能的走向。IBM 关于 Java 安全的倡议考虑到了客户的部署基于 Java 的企业解决方案的愿望。因为写这篇论文时 JDK 1.2 正进入企业 beta 测试阶段,所以在 JDK 1.2 被广泛采用时,业界反馈可能会引起一些操作上的更改和改进。

软件业致力于为开发和部署用 Java 编写的任务关键的应用程序提供支持。Java 环境涵盖了从企业服务器到嵌入式设备的广阔范围。在众多基于 Java 的系统中,包括 JavaOS、EmbeddedJava 和 PersonalJava 在内的系统将变得可用,潜在地提供不同级别的底层服务。这种局面将会导致对各种不同级别的安全强度的需求。

Java 安全最初的焦点是对在万维网浏览器中所下载的 applet(小程序)的支持。Java 的安全功能很大程度上反应了对这种功能的继承。随着 Java 的成熟,它将日益增加对附加的安全功能的支持,以满足目标应用程序环境的需要。所包括的附加功能是在大规模服务器应用程序中常见的安全功能。

我们已经看到过电子商务(通过 Web 电子化经营的商务)怎样通过大量的定单增加客户范围的示例。随着客户群的扩大,由于恶意行为所造成的绝对损失量可能大大增加,有必要在信息技术系统中部署改进的安全产品。但是,如果安全漏洞被广泛公开,客户的信誉将受到玷污。IBM 的客户要求系统实现几乎是完美无缺的,并且能够满足企业的需要。他们期望 IBM 确保风险是公开可知的,并且当漏洞被揭开时能够马上作出反应。

Gartner Group 的 1996 年 12 月所做的报告,Java -- Good Start, but Not Yet Secure 1 ,强调了关于基于 Java Development Kit(JDK)早期版本的 Java 安全所涉及的几个方面。切合实际的期望是很重要的:因为没有系统是百分之百安全的。但是,认识到关于 Java 安全的这三方面是很关键的:

  1. Java 启用了以前从未被大范围商业采用的功能:动态地从系统之外的源文件装入代码。这个重要的功能使得著名的“特洛伊木马”安全问题更严重。但是,它也提供了极有价值的功能。
  2. Java 安全并不是为了解决与 Operating System/390(OS/390) Security Sever 中的“资源存取控制设施”(Resource Access Control Facility( RACF))功能相同的问题,这个问题通过“多虚拟存储”(Multiple Virtual Storage(MVS))或类似的传统企业安全技术得到解决。RACF 旨在保护企业及其资源免于受到恶意用户的攻击。而 Java 安全旨在保护用户的工作站和资源免于受到恶意代码的攻击。
  3. RACF 和其它传统企业安全技术工作得很好,因为它们采用 ― 并且它们的环境提供 ― 强大的操作系统完整性作为基础。Java 也采用这种完整性;但是,主流的桌面操作系统没有充分提供这种完整性。
安全技术需要预防或减少以下这几种类型的威胁:
  • 未授权的资源使用,包括盗用软件或 CPU、破坏数据和软件、信息泄漏以及不负责任的行为
  • 滥用特权,包括虚报标识符、从属关系、交换的项目值以及服务的授权,假冒,欺骗以及勒索
  • 恶意的代码,包括需要防范的病毒、蠕虫、特洛伊木马以及逻辑炸弹
  • 窃听,包括主动和被动手段
  • 拒绝服务,包括资源毁坏、服务饱和以及通信中断
到目前为止,特洛伊木马和电子欺骗攻击是公布的最常见的 Java 安全威胁。因为大多数攻击是由于浏览器或 Java 中的实现错误,而不是基本的设计错误而发生,所以一旦确定,比较容易提供修复。

Java 安全的基础及演进

因为最初 Java 的商业部署是在 Web 浏览器中,所以 Java 安全的侧重点是提供保护程序不受到恶意 applet 攻击的功能;也就是说,保护不受到从因特网的 Web 站点下载的恶意代码的攻击。Java 安全建立在 Java 运行时环境的三个基本方面的基础上:ByteCode Verifier(字节码验证器)、Security Manager(安全管理器)以及 ClassLoader(类装入器)。

ByteCode Verifier 确保所下载的代码被恰当地格式化,字节码(“Java 虚拟机”指令)没有违反这种语言或虚拟机的安全限制(无非法数据转换),没有执行指针寻址,内部堆栈不能溢出或下溢,以及字节码指令将拥有正确的类型参数。 2

Security Manager 在尝试执行文件 I/O 和网络 I/O、创建新的 ClassLoader、操作线程或线程组、启动底层平台(操作系统)上的进程、终止“Java 虚拟机”、将非 Java 库(本机代码)装入到 JVM、完成某种类型的窗口系统操作以及将某种类型的类装入到 JVM 中时发起运行时访问控制。例如,Java applet 沙箱 3 严格地将所下载的 applet 约束到被认为是比较安全的有限的一组函数中。

ClassLoader 确定 applet 怎样以及什么时候可以装入代码并确保 applet 不会取代运行时环境中的系统级组件。

除此以外,Java 编程语言和运行时环境的一些功能,包括自动的内存管理和强大的数据类型安全,使编写安全的代码更容易。

通过使用 JDK 1.1 提供的数字签名服务,可以以与用 Java 编写的应用程序类似的方式对待可信的 applet。也就是说,这些可信的 applet 比在被限制的 Java 沙箱中运行的 applet 对 JVM 资源具有更高的访问权。改进过的并且更加灵活的访问控制功能是 JDK 1.2 中添加的主要安全功能,将在这篇论文的后面的部分中更详细地描述。

今天的计算环境有很多安全方面的弱点,早于 JDK 1.2 的 Java 中的可用功能克服了这些弱点。

  • 强大的内存保护 ― Java 除去了恶意或不经意读取或毁坏程序边界外的内存位置的可能性。结果,Java 应用程序或 applet 不能获得读取或更改内容的未授予的内存访问权。
  • 加密和数字签名 ― Java 支持使用强大的加密技术来验证 applet 是否来自一个可以识别的来源,并且没有被修改过。
  • 规则实施 ― Java 是完全基于对象的。通过使用 Java 对象和类来表示共同的信息实体,有可能显式地声明管理这种对象使用的规则。


 



Java 运行时环境

Java,作为一种面向对象的语言,可以用来以与用 C 和 C++ 来提高程序员生产效率几乎相同的方式开发应用程序。与其它很多编程语言相比较,Java 提供了标准的一组库,包括范围广泛的通信和安全功能,因此简化了客户机/服务器以及分布式系统应用程序的构造和部署。当代码被装入到 JVM 运行时环境时,它还提供了数据类型安全,并且完成字节码验证。这捕获了由编程错误产生的错误,尤其是由指针算法和数组越界索引的错误。

此外,基于 Java 的支持环境有下面这些:

  • Applet ― 具有被限制访问权的可下载代码,通常和浏览器配合使用
  • Aglet ― 推向终端设备的代码,而不是 applet 的拉模型
  • Servlet ― 服务器上的 Java 代码
  • Orblet ― 使用对象请求代理通信机制的代码

为了达到可重用性,这些环境的任何一种都可以使用组件模型,比如 JavaBeans 4和 Enterprise JavaBeans 5

Java 正发展为支持大多数的系统配置:

  • 目标为在家庭以及其它地方的多种消费者设备中使用的嵌入式系统
  • 基于 Java 的智能卡
  • 像寻呼机和 PDA(个人数字助理)这样的个人管理设备
  • 网络计算机 ― 瘦客户机和胖客户机
  • 移动系统
  • 高可伸缩的企业服务器

为了支持这个范围的配置,正在发展一系列的产品 ― 包括 JavaOS、PersonalJava、Enterprise Java 以及驻留在应用程序构建器环境中的 JVM ― 来满足各个环境中独特的需要。

安全方面的要求随这些实质上不同环境的独特特征的不同而异。最初的工作表明通用的安全模型是可能的,环境的差异可以通过提供扩展来支

[1] [2] [3] [4] [5] 下一页

文章录入:root    责任编辑:root 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    最新热点 最新推荐 相关文章
    · 性能测试方法
    · Java 安全的演进
    · Java 安全性的演变和理念 第一部分:安全
    · 第 1 部分: Web 安全与 Rational AppScan
    · 自动化测试实施步骤和最佳实践
    · Web测试方法
    · 站点测试-WebTesting
    · 实施自动化功能测试的解决方案
    · 经典之作《代码大全》中的单元测试---测试
    · IP网络的测试方法
    · 第 2 部分: 使用 Rational AppScan 应对 
    · 第 1 部分: Web 安全与 Rational AppScan
    · 构建安全软件: 选择技术,第一部分
    · 软件安全性原则: 第一部分
    · Java 安全性的演变和理念 第一部分:安全
    · 安全的代价是什么?
    · 保护系统安全: 一个识别用户的三向解决方
    · 穿透企业网络
    · Java 安全的演进
    · 您的 Java 代码安全吗 — 还是暴露在外?
    tcp/ip的安全性
    现有信息安全的主要评价准则
    计算机系统的安全标准
    信息安全服务资质评估准则(
    Java 安全性的演变和理念 第
    安全的代价是什么?
    保护系统安全: 一个识别用户
    穿透企业网络
    JAVA上加密算法的实现用例
    对等计算实践: P2P 遇上 SSL
     
     
     
    ======> [CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | 

    Copyright@2007 by CNTester.com 中国测试员网站 桂ICP备07005590

    本站为开源免费网站,非商业赢利性组织。本站文章部分从网络搜索获取,如果您认为某些侵犯了您的权益,麻烦您联系本站,我们会尽快删除相关内容,同时也希望您的谅解,我们的初衷是为了让更多人去学习这方面的知识,让行业有更好的发展。

    联系电话: 15021358905