.class文件检验器

java安全沙箱(二)之.class文件检验器

不想你离开。 提交于 2019-12-04 00:03:22
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 ‍ ‍ .class文件检验器 ‍ ‍ 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 本篇博客主要介绍 “.class文件检验器”的基本原理;如需了解其它几类安全机制可以通过上面的 博客链接进入查看 。 简介 jvm的.class文件检验器用于检查.class文件是否拥有合法的内存结构,这种检查是有必要的,因为java的.class文件可能来自本机,也可能来自网络,可能是你自己编译的文件,也可能是别人篡改过的文件。而对于jvm来说,一个.class文件就是一个字节序列,它不会过问字节序列的来源,只会校验字节序列的结构是否正确。 .class文件检验器保证安全的措施就是检验.class文件字节码的健壮性,比如某个 .class文件是 被恶意篡改过的,这个.class文件中包含一个方法,该方法有一条goto指令,直接跳到方法外部去执行未知的代码,如果执行该方法,很可能会导致jvm崩溃。所以,由 .class文件检验器检查字节码的健壮性是很有必要的。 虽然.class文件检验器检查字节码能保证程序的健壮性, 然后这是需要牺牲一些性能的;为了将这种影响降到最低, .class文件检验器 会在字节码执行之前完成大部分的检验工作,也就是说,