【java之父】.net的巨大安全漏洞
renai lemay, z.net australia
february 04, 2005
url: http://www.z.net.com.au/news/security/0,2000061744,39179932,00.htm
翻译:yqj2065()
java的创建者james gosling本周说:微软在.net的通用语言执行环境(common language runtime)中支持c and c++的决定是“他们能够做出的最大的、最唐突的决定”。
本周早些时候,gosling——现任sun’s developer products group的cto,在悉尼的一次活动中,对开发人员的演讲时做出上述评论。他进一步评论说,通过把这两种语言纳入微软的软件开发平台,该公司“留下了一个巨大的安全漏洞,足以让很多很多大卡车穿来穿去”。【好过分哦】
按照gosling的说法,该安全漏洞基于如下事实——较早的语言的几个特性与安全性是矛盾的:“c++允许你做出随意的造型(casting),任意地添加images and pointers,而且在指针之间通过非常、非常的非结构化方式转换过来转换过去。”
“如果你看看java的安全模型和可靠性模型,很多事情都被成为异常处理了,它们真正精确地依赖于对象属性的完整性。因此,如果有人给你一个对象并且说‘这是一个图像’,那么它就是一个图像,它不可能是造型出一个图像的,指向某个流的指针”。gosling说。
微软的开发者传道士charles sterling完完全全的不同意gosling的评论,因而他试图澄清关于.net安全性的问题。sterling指出.net定义了不同类型的代码,“managed” code是处于.net框架的控制之下执行的代码。新的语言如c# and visual basic.net仅仅产生managed code。
然而,gosling提及的是传统语言如c and c++所产生的“不安全”代码。不安全代码是一些不严格遵循.net所定义的类型安全性规则的老代码,这类的代码需要附加的许可才能执行。按照sterling的观点:"you as a developer take it upon yourself" to utilise unsafe code in your .net applications.
一个重要之处在于,由于一些语言的能力中掺杂了特定机器的特性,那些所谓的不安全代码确实有着比"managed" code运行得更快的潜能,就可能以牺牲平台的移植性以换取速度。sterling同意这一点,正如他所说的:在两种平台之间选择完全是一种冒险:如果开发者愿意“接受这种不安全代码的冒险”,那么他可以实现出“这个星球上最好性能的系统”。
当被问到他个人了解的情况,.net开发者是否真的在.net平台上实现c or c++代码时,sterling也给这场争辩一个现实的检验。在大约1000个sterling知道的开发者中,他仅仅能想到个别人直接在c++代码下开发。这是否象征着这一部分开发者不愿意使用不安全的代码呢,还不清楚。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器