java技术提供以下三种机制确保安全:
1、语言设计特性(对数组的边界进行检查,只进行合法的类型转换,无指针算法等)
2、访问控制机制,用户控制代码能够执行的功能(比如文件访问、网络访问等)
3、代码签名,利用该特性,代码的作者就能够用标准的加密算法来标明java代码的身份。这样,该代码的使用者就能准确的知道谁创建了该代码,以及代码被标识后是否被修改过。
java虚拟机负责检查不良指针、无效的数组偏移量等。为了控制进入虚拟机的信息,还需要采取其它步骤。
当类文件加载到虚拟机中时,要检查其完整性。
为了获得最大的安全性,无论加载类的默认机制,还是自定义的类加载器,都需要与负责控制代码运行的安全管理器类协同工作。
类加载器
虚拟机只加载程序执行时所需要的类文件。例如,程序从***.class开始执行,虚拟进执行的步骤为:
1、虚拟机有一个用于加载类文件的机制(例如,从磁盘上读取文件或者从web上请求文件;使用该机制来加载***类文件的内容)
2、如果***类拥有类型为另一个类的实例变量,或着拥有超类,那么这些类也会被加载(加载某个类所依赖的所有类的过程称为类的解析)
3、接着,执行***类中的main方法(该方法是静态的,无需创建类的实例)
4、如果main方法或者main调用的方法要用到更多的类,接下来就会加载这些类
类加载机制并非只使用单个的类加载器。每个java程序至少拥有三个类加载器:
1、引导类加载器
2、扩展类加载器
3、系统类加载器(有时也称应用类加载器)
引导类加载器负责加载系统类(通常从jar文件rt.jar中进行加载)。是虚拟机整体中的一部分,通常用c语言来实现。引导类加载器没有对应的ClassLoader对象。
扩展类加载器用于从jre/lib/ext目录加载“标准的扩展”。可以把jar文件放入该目录,这样即使没有任何类路径,扩展类加载器也可以找到其中的各个类。
系统类加载器用于加载应用类。它在由CLASSPATH环境变量或者-classpath命令行选项设置的类路径中的目录里或者是jar/zip文件里查找这些类。
扩展类加载器和系统类加载器都是用java实现的,是URLClassLoader类的实例。
类加载器中有一种父/子关系。除了引导类加载器外,每个类加载器都有一个父类加载器。根据规定,类加载器会为它的父类加载器提供一个机会,以
便加载任何给定的类。并且只有在其父类加载器加载失败时,它才会加载该给定类。
注意:当实现一个类加载器时,应该总是将类的加载操作委托给父类加载器来执行。这样做的一个潜在风险是,自定义的类加载器有可能会意外的加载某个系统类的某个版本,而绕过了重要的安全检查。
JAVA的安全机制有哪些 java的安全管理机制
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java 线程安全的int
java 线程安全的int
线程安全 原子变量 Java -
java 安全管理器 policy java的安全管理机制
java沙盒安全架构总结 &
java 安全管理器 policy java classloader url jvm