前面已经提到,Java程序可以从网络上下载运行,这必然带来许多不安全因素。一些恶意的Hacker可以直接写出字节代码段攻击用户节点,如删除文件、搞乱硬盘或未经用户许可在网上发送本地信息等。这些防卫本地机被攻击的任务就交给了Java虚拟机完成。Java虚拟机提供了几种安全机制,其中两种主要的机制是安全管理器和Java类文件认证器。
安全管理器是安全的实施者,它是一个可扩展类,提供加在应用程序和特写系统上的安全措施。它实现Java虚拟机的安全策略。安全管理器建立Java程序的名空间,限制对网络、本地文件系统和程序其它部分的访问(程序的名空间是由操作系统或这里的Java虚拟机所建立的程序边界,该程序无法访问名空间以外的资源)。
Java认证器在.class文件运行前完成该文件的安全检查,确保Java字节码符合Java虚拟机规范。Java平台通过使用认证器查看类文件的句法和词法正确性,检查版本及API符合性等,保证病毒和其它恶意程序不会侵犯本地系统。认证器包括四个阶段的操作:类文件认证、类型系统认证、字节码认证和运行时类型与访问检查。此外,认证器在检查期间还能识别算法操作的上溢和下溢等其他可能发生在运行期间的程序错误。
最后需要注意的一点是,Java虚拟机的取得要谨慎小心。因为大多数Java安全笥措施都靠无病毒的Java虚拟机完成,如果用户下载了一个带有病毒的虚拟机,则虚拟机不仅失去防范功能,本身也可能成为用户的隐患。Sun,Microsoft等公司的Java虚拟机都经过了彻底检查,下载和操作通常是安全的,下载安全的Java虚拟机是对付入侵的第一道防线。