Java虚拟机的内置安全特性,看完务必书藏起来,很重要!

来源:互联网 发布:js判断ios系统版本 编辑:程序博客网 时间:2024/06/14 13:07

前言

保持了每天一篇的更新速度,每天的内容都不是很多,因为打字比较累哈,总结的都是小疯子自己看完书体会分享给大家的,所以,如果觉得对于Java虚拟机你想有更深入的了解,可以点开小疯子的头条,你会发现诚意满满!

Java虚拟机的内置安全特性,看完务必书藏起来,很重要!

正文

Java虚拟机的安全特性

当Java虚拟机装载了一个类以后,经过对它的三次class文件检验以后,就可以被运行了。除了对符号引用的检验,其实Java虚拟机在执行字节码时还进行一些内置的安全机制的操作。

Java虚拟机的的特性:

  • 类型安全的引用转换。

  • 结构化的内存访问。

  • 自动垃圾收集。

  • 数组边界检查。

  • 空引用检查。

为了使Java程序更为健壮,也使得它们的运行更为安全,需要保证Java程序只能使用类型安全的,结构化的方法去访问内存。如果一个程序破坏内存,崩溃,或者影响其他程序崩溃,那么,它就是一个潜在的危险程序,通过强制对内存的结构化访问,Java虚拟机可以产生健壮的程序,而且还可以阻挠那些黑客,使他们不能为了达到某些目的而破坏虚拟机的内在存储。

内置在就Java虚拟机中的另一个安全特性——作为内存的机构化访问的一个后备——就是并未指明运行时数据空间在Java虚拟机内部是怎么分布的。运行时数据空间是指一些呃逆村空间,Java虚拟机用这些空间来存储运行一个Java程序时所需要的数据,Java栈,存储字节码的方法区,以及一个垃圾回收堆。如果查看一个class文件的内部,将找不到任何内存地址。当虚拟机装载一个class文件时,由它将这些字节码以及其他从class文件中解析得到得数据放置在内存的什么地方,当虚拟机启动一个线程时,由它决定为这个线程创建Java栈放在哪里,当创建一个对象时,也是有它决定放在内存哪个地方,这样,一个黑客就可能凭借class文件中的内容来推测出内存中的哪些数据分别代表什么。

但是,对于支持Java虚拟机的类型的类型安全机制所建立的安全屏障,还是有办法可以突破的,虽然字节码指令没有向用户提供不安全的,非结构化的内存访问方法,但是还是可以绕过字节码,调用本地方法,当调用本地方法的时候,Java安全箱完全不起作用,所以当调用一个本地方法试图做一些具有破坏性的动作时,安全管理器并没有检查。

因此,在安全管理器中包含了一个方法,该方法用来确定一个程序是否能够装载动态链接库,因为在调用本地方法时动态链接库是必须的,不可靠的applet就不能装载新的动态链接库,因此他们就不能安装自己的新的本地方法,但是他们可以调用Java API的方法,这些方法可能是本地的,但是都是可信的。

最后一个异常的结构化错误处理,因为Java虚拟机支持异常,所以当一些违反安全的行为发生时,它会做一些结构化处理,因为虚拟机支持异常,所以当一些违反安全的行为发生时,它会做一些结构化处理,Java虚拟机将抛出一个异常或者一个错误。

到此就介绍结束了,预告一下,下一节,安全管理器!没有听过没有关系,不关注就太可惜了~

阅读全文
0 0
原创粉丝点击