工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
解析Java体系结构对信息安全的支持
[文章信息]
作者:赵熙朝
时间:2005-02-22
出处:天极网
责任编辑:方舟
[文章导读]
Java语言拥有三大特征:平台无关性、网络移动性和安全性……
advertisement
热点推荐
· MFC程序员的WTL指南之包容ActiveX
· 系统安全卫士SPY Destroy
· 绕过身份验证加对方为好友
· 2月21日软件精选 QQ被盗原因及防范
· Visual Basic上机考试综合应用题选讲
[正文]

1 2 3 4  下一页

天极开发精彩专题(Java类)
·JBuilder 2005代码审查功能体验 ·JSP程序设计初级入门教程
·Java数据库接口JDBC入门基础讲座 ·“老虎”来了 J2SE1.5新功能一览
·Java Applet编程技巧实例专辑 ·JBuilder 9.0时尚编程剖析
·Hibernate 的原理与配置快速入门 ·变身记 菜鸟Java入门手册

  Java语言拥有三大特征:平台无关性、网络移动性和安全性,而Java体系结构对这三大特征提供了强大的支持和保证,本文着重介绍Java体系结构对支持信息安全的原理和使用方法。

  Java体系结构

  Java的体系结构如下图所示,首先Java的源代码Java文件由编译器编译成Java的二进制字节码class文件,然后class文件由Java虚拟机中的类装载器进行加载,同时类装载器还会加载Java的原始 API Class文件,类加载器主要负责加载、连接和初始化这些class文件以后,就交给虚拟机中的执行引擎运行,执行引擎将class文件中的Java指令解释成具体的本地操作系统方法来执行,而安全管理器将在执行过程中根据设置的安全策略控制指令对外部资源的访问。


  Java的执行方式不是编译执行而是解释执行,不同平台上面相同的源代码编译成符合Java规范的相同的二进制字节码,然后再交给支持各自平台的虚拟机去解释执行,"先编译,后解释,再执行"三步走的方式使得Java实现了"一次编写,到处运行",如果Java应用使用的是100%标准Java API并且没有直接调用本地方法,那就可以不加修改地运用在多种平台上,这样的平台无关性使得在异构的网络环境或者嵌入式方面的应用更方便和现实。Java的网络移动性带来了一种全新的软件模式,在分布式处理模式的基础之上,可以将软件和数据通过网络传送到客户端去,这样确保了客户端有必备的软件来浏览和操纵通过网络传输的数据,Java体系结构支持把单一的执行文件切割成小的二进制字节码文件Class文件,而这些文件可以按照应用的需要动态连接、动态扩展。Java体系结构对安全性的支持主要是通过Java语言本身安全性、虚拟机的类加载器和安全管理器以及Java提供的安全API几个方面来实现:防止恶意程序的攻击,程序不能破坏用户计算机环境;防止入侵,程序不能获取主机或所在内网的保密信息;鉴别,验证程序提供者和使用者的身份;加密,对传输交换的数据进行加密,或者给持久化的数据进行加密;验证,对操作设置规则并且进行验证。

  Java信息安全的必要性

  随着互联网应用越来越广泛,并且互联网其本身独特的资源共享性,因此能够按照用户需求及时准确获得信息和处理信息的应用对用户而言就相当重要,这也是Java得以迅速发展和被广泛接受的原因。但同时网络也提供了一条攻击接入计算机的潜在途径,特别是当用户下载网络软件在本地运行,这就要求Java能够对病毒/木马的问题加以防范,对信息以及本地环境进行保护。比如我们浏览一个网页的时候,网页上的Applet可能会自动下载并且运行,而这个Applet完全有可能来自不可靠的地方,又或者我们使用通过JINI服务查找到的网络上不可靠的服务对象来获得服务,如果没有Java体系结构提供的安全机制,这就很有可能引入了一个怀有敌意的程序造成信息丢失、资料泄密、相信伪造数据和修改本地计算机安全设置等等后果,带来未知的严重后果。

  Java语言本身安全性

  Java语言的设计者们是在C++的基础上设计出来Java的,因此与C++相比它的语法更加简单清晰,结构、单元、运算符重载、虚拟基础类等在Java中都没有采用,并且取消了多重继承而采用实现多个接口的方式。这样能降低开发人员犯错误的几率,帮助他们写出更安全的代码。

  Java中去除了C++语言中的令人费解、容易出错的"指针",用列表、堆、哈希表等结构来代替,避免了任何不安全的结构。Java也没有索引核查的数组访问,因为这往往会导致不定的、不可预测的程序操作,它所有的数组访问都必须先检查是否越界。Java要求所有的变量在初始化以前不能使用,对于基本数据类型变量都会自动地赋给某个初始值,避免了未初始化变量获取内存信息。所有这些都使得程序不能访问任意的内存地址,对于内存中的实体信息只能通过有权限的对象进行访问,而不会出现象C++那样把类型指针强制转换成内存的指针,然后通过内存查找的方法找到私有的变量。

  Java分配内存对于开发人员来说是透明的,开发人员使用new方法新建对象,这时候虚拟机就会从堆内存中找到合适的内存空间,开发人员不需要也不能够进行干预。而对于内存的回收,Java避免了开发人员明确干预对象的回收,比如C的free或C++的delete命令,避免了开发人员无意间对内存的破坏。Java采用虚拟机的"垃圾回收"机制来实现的内存自动管理,释放不再被使用的内存资源,内存回收器就像一台垃圾收集车,但是和我们在大街上看到的收集车,仅仅收集大家放在垃圾桶里面的垃圾不同的是,它还要到你家里去帮你找出那些东西是不要用的垃圾,然后把这些东西拿走,最后还要整理家里的空间,腾出最大的空间让你放新东西。Java的内存回收器目的就是找到不再引用的对象,释放内存空间,并且需要整理内存的碎片空间,尽量避免出现"内存不足"的情况。

  对于在网络中交换的序列化对象很容易在重建对象的时候访问到对象的私有信息,这时候Java提供了两种办法来保护信息,一种就是采用给变量加上transient关键字的方法,这样对象序列化的时候就不会读写该变量,另一种就是在实现Externalizable接口而不是Serizlizable接口,这样对象就只能通过writeExternal和readExternal方法来保存和重建,其他方法无法进行了。

  以上这些都是Java语言本身对信息安全提供的基础。


1 2 3 4  下一页

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 关于Java栈与堆的思考
  • 大道至简 Java 23种模式一点就通
  • JavaBeans程序开发从入门到精通
  • 使用SWT开发基于Java的图形用户界面
  • Java加密和数字签名编程快速入门
  • 夏普第8代液晶生产动工 下半年将变革策略
  • 手机闲置造成资源浪费 专家呼吁早出台法规
  • IT卖场网站竞争加速 在残酷现实中沉默前行
  • 笔记本市场硝烟再起 家用笔记本年内翻番
  • 信息化时代:谁来保护我们的个人信息?
  • 维权法宝:别让信息化的证据“稍纵即逝”
  • 中国软件三痛之人才篇:外包是“重灾区”
  • 关于我国电子政务建设信息共享策略的反省
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索