1.2.5 安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病
毒、防篡改的系统。
从一开始,Java就设计成能够防范各种攻击,其中包括:
运行时堆栈溢出。如蠕虫和病毒常用的攻击手段。
破坏自己的进程空间之外的内存。
未经授权读写文件。
原先,Java对下载代码的态度是“尽管来吧!”。不可信代码在一个沙箱环境中执行,在这里它不会影响主
系统。用户可以确信不会发生不好的事情,因为Java代码不论来自哪里,都不能脱离沙箱。
不过,Java的安全模型很复杂。Java开发包(Java Development Kit,JDK)的第一版发布之后不久,普林
斯顿大学的一些安全专家就发现一些小bug会允许不可信的代码攻击主系统。
最初,安全bug可以快速修复。遗憾的是,经过一段时间之后,黑客已经很擅长找出安全体系结构实现中的
小漏洞。Sun以及之后的Oracle为修复bug度过了一段很是艰难的日子。
遭遇多次高调攻击之后,浏览器开发商和Oracle都越来越谨慎。Java浏览器插件不再信任远程代码,除非
代码有数字签名而且用户同意执行这个代码。
注释:现在看来,尽管Java安全模型没有原先预想的那么成功,但Java在那个时代确实相当超前。
微软提供了一种与之竞争的代码传输机制,其安全性完全依赖于数字签名。显然这是不够的,因为微软自
身产品的任何用户都可以证实,知名开发商的程序确实会崩溃并对系统产生危害。