Java之父戈斯林:.net漏洞之大可跑大货车 | |||||||||
---|---|---|---|---|---|---|---|---|---|
http://www.sina.com.cn 2005年02月06日 09:41 赛迪网 | |||||||||
作者:天虹 【赛迪网讯】Sun公司开发人员产品事业部现任首席技术官、Java语言之父詹姆斯.戈斯林(James Gosling)日前在澳大利亚悉尼举行的一次会议上对开发人员发表讲话时说,微软决定在.net通用语言运行时(CLR)支持C和C++语言是微软犯下的最大的和最具有冒犯性的错误之一。戈斯林进一步评论说,微软把这两种语言加入到软件开发平台中,就留下了一个
据戈斯林说,这个安全漏洞是根据这样的事实推断的:老式编程语言中的许多功能对于安全是相互矛盾的。C++允许人们任意发布数据、任意增加图像和增加指针,并且以杂乱无章的方式在指针之间来回转换。 戈斯林说,如果你考察Java或者可靠的编程模式中的安全模式,情况是完全不同的,编程对象属性的完整性是非常重要的。因此,如果有人给你一个编程对象并且说“这是个一图像”,那么这就是一个图像,而不是指向刚刚出现图像的媒体流的指针。 微软开发人员的主要支持者查尔斯.斯特林(Charles Sterling)并不完全赞同戈斯林的说法。但是,他想证实有关.net安全的一些问题。斯特林指出,.net界定不同类型的代码。“管理”的代码是在.net框架控制下执行的代码。C#和Visual Basic.NET等新的语言只能制作出管理的代码。 然而,戈斯林担心的是那些用老式的C和C++等语言制作的“不安全”的代码。不安全的代码是那种不能够严格执行.net确定的安全规则的代码。这种代码需要额外的许可才可以执行。 一个重要的问题是所谓的不安全的代码的运行的速度要比“管理的”代码运行的速度快,因为某些语言包含了机器专用语言功能,可以为了速度而牺牲平台的可移植性。斯特林承认这个观点,并且表示在两个平台之间进行选择充满了风险。如果开发人员愿意选择接受不安全代码这种风险,他们就可能制作出全世界性能最佳的程序。 斯特林表示,在他认识的1000名.net开发人员中只有一个人直接使用C++语言开发代码。这是否表明开发人员不愿意使用不安全的代码还不清楚。
|