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

本文探讨了Java虚拟机在执行字节码时内置的安全机制,包括类型安全的引用转换、结构化的内存访问、自动垃圾收集、数组边界检查和空引用检查。这些特性确保了Java程序的健壮性和安全性,防止黑客破坏虚拟机内存。尽管有安全管理器来限制不安全的本地方法调用,但仍然存在绕过安全屏障的可能性。Java虚拟机在遇到违反安全的行为时会抛出异常或错误,提供异常处理机制。
摘要由CSDN通过智能技术生成
前言

保持了每天一篇的更新速度,每天的内容都不是很多,因为打字比较累哈,总结的都是小疯子自己看完书体会分享给大家的,所以,如果觉得对于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虚拟机将抛出一个异常或者一个错误。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值