安全的代价是什么?

来源:互联网 发布:上海九院口腔科 知乎 编辑:程序博客网 时间:2024/04/30 16:52
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>Java的力量是不容置疑的,但安全问题也是开发者的关注焦点. 本文将权衡其益处与随之而来的危险.如今,Internet正在显著的改变着我们的生活与工作方式.即使那些最狂热的愤世嫉俗者也会承认,在不远的将来,我们的指尖将控制这个世界。然而,对于生活的各个方面,新的自由并不会毫无代价的就可获得。所以,随之而来的问题会让人相当头痛的。对于那些在网上冲浪的人和不断扩大网上业务的公司来说,安全已经成为他们的一个按语。在Internet上,只要有一扇开着的门,我们便要找到一把防止各种恶意攻击的钥匙。下面是一些很普遍的例子: 一种毁坏硬盘数据的病毒。. 一个落入恶人之手的信用卡号码. 被窃取的客户清单.一些新的Internet执行模式正逐渐为人所关注:下载程序的时代已经到来。是的,从表面上看,理智的个人从未知的站点下载他们未见过的程序,使他们的系统有勿庸置疑的访问权限。Java作为一种为Web而产生的语言,正冲在计算浪潮的最前沿。applet已被添加到计算机科学词汇中,这充分说明了Java的巨大成功。一个Java applet正如它听上去那样:一个从远程主机处下载,并在本地机器上执行的小程序。 这种新结构无疑会有很多功能,但安全问题也随之而来。任何一个人如果在使用浏览器,并在浏览一个包含applet的网页,他便在使用Java。而且,applet会将你暴露在更加复杂的攻击之下,如: 黑客编写一个似乎是本地的、可信赖的applet。这种漏洞需要两个技巧:黑客要设法将程序放到用户的本地硬盘上(利用一般浏览器的特点:文件缓冲) ,并骗过浏览器使之以一个applet调入。 黑客利用Java DNS翻译处理的弱点:黑客设法骗过 runtime环境,使之认为他的系统是一个可信赖的主机。然后初始化一个突破牺牲品的防火墙网路连接。若基于applet的计算已成为Internet生活的一个实事,那么重要的问题应该为: 好的安全保障由什么构成 对执行环境的依赖程度到底应多大? 充分的安全保障的成本有多大?让我们从显而易见的问题开始:真正安全的系统是没有任何外部访问能力 (如电话线、 LAN连接等) 并在一封闭环境中保持锁定和警戒。显然,这样的系统对用户的价值相当有限。所以,安全问题归根到底是对一种危险的分析,是Internet访问带来的益处和疏漏导致的后果的权衡。但是,权衡危险必须建立在理解安全模型的基础之上。这对下载环境尤为重要:因为你不知道一个applet会干些什么,你毫无办法,只有依赖Java内置的安全特性。但你能这么放心吗?安全模型 Java的安全模型被分为三个主要的防范区域: Byte-code验证器、 类装人器 和安全管理器。虽然我们将逐个的讨论,但注意到这三个部分是Java运行环境执行模式的一个整体是非常重要的。也就是说,它们在Java设计时是相当重要的,而不是一种追思。编译后,Java原代码被转换成为独立与平台的字节代码。applet安全便开始与Byte-code验证器,它将: 保证编译后的代码格式正确。 对每个成员函数进行检查以确保其字节代码不会违犯访问类型限制和指针寻址规则(见下文)。通过验证后,以下几点将得到保证: Internet堆栈不会发生溢出或下溢。 (若两种情况中的一种发生,系统的稳定程度下降,黑客也将得到“混水摸鱼”的机会。) 这种类型的攻击都是针对一些很著名的安全疏漏的。 不会发生非法数据转换 (验证器不允许整数作为指针来处理)。这点保证了变量不会访问限制访问的内存区域。 字节代码指令将有正确类型的参数 (与上面的原因相同)。 在一个对象的内部,只有公共数据和函数才可被访问。限制对所有部件的访问,所以属性数据保持为私有的。另一个防范领域, Java类装入器,决定了类(代码)将如何(和何时)被调入。它许多重要功能中的一项就是要确保在运行环境中正在执行的applet不会取代系统级的部件。这个部分是由浏览器生产商提供---通常它是基于由Sun Microsystems公司提供的模板。 Java安全模型的第三个,同时也是最重要的部分便是安全管理器。它的任务对所有所谓“危险方法”(要求文件输入/输出、网络访问或想要定义一个心得类装入器)进行 runtime验证。其中包括: 管理所有的socket操作。 控制对操作系统线程的创建和访问。 阻止新的类装入器的安装。 管理对文件的访问 (显然,我们不想让applet随便阅读文件l)。为保证安全,基本Java类库(由Sun提供的)中的所有的方法必须在执行任何危险操作之前得到安全管理器的许可。安全管理器对任何请求都有否决权。在未来的日子里,Java的安全模型还会不断的发展---堵住已被发现的缺口同时不断支持新的语言特点。这些特点包括: 数字签名,这样你便可以放心执行的applet确实是你想要执行的。 允许站点互相识别的有验证能力的证书。 安全 Sockets, 通过加密来确保相互协作的构件间的私有和互相信任的通讯。安全准则 Java用户目前所经历的问题中,绝大多数都应被划分到实现方面的欠缺,而不是安全模型本身的错误。 (例如,上文所提到的两个漏洞已经被改正)。但是,为了增加Internet上的经验,用户和系统管理圆应遵循以下的准则: 只使用网络软件的最新版本,特别是浏览器。较早版本将存在更多的错误。 能被你的系统所识别。例如,你是通过你的个人笔记本电脑或企业网络系统访问Net吗? 警惕并调查最小的可疑之处。一次“文件丢失”很可能由一次攻击所导致。本文只是对Java安全模型的简略描述。还有很多的问题和计策需要管理员(和用户)去了解与探究(如防火墙、企业内部网等等)。但到此为止,你应该思考一下这两个问题: Java applets确实安全吗? 你应该使用 Java吗?当然 --如果你能持之以恒,益处会远远多于危险。关键就在于要先于黑客一步。关于作者 Charles F. Bowman 是一位精通关系型数据库、GUI和面向对象技术的独立的顾问、作家和演说家。可以通过cfb@panix.com和71700. 3570@compuserve.com与他联系
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 南丹 吉林市中海铂悦公馆 中海石油为什么便宜 中海石油化学股份有限公司 中海石油环保服务有限公司 中海石油化工进出口有限公司 中海油为什么价格低 中海油徐玉高 中海油 价格 中海油校园招聘 中海油吧 中海油海上平台工资待遇2018年 天津中海油招聘信息 中海油2018招聘计划 中海油采办 中海油招聘网 中海油招标 中海油炼油厂 中海油今日油价查询 中海油供应商 中海油湛江分公司 中海油招聘信息 2018中海油员工年薪是多少 中海油待遇 中海油油品质量怎么样 中海油加油站 中海油采办系统 中海油工程公司 天津中海油 中海油股票 中海油新能源 中海油金融 中海油海洋工程公司 中海油销售公司 中海油电话 中海油采油公司 中海油科技 中海油的油怎么样 中海油 海上平台 中海油进出口公司 中海油国际有限公司