Java语言安全模型是其有别于传统的编程语言的一个很重要的特色,采用一种沙箱模型隔离了Java的运行环境与具体的操做系统,使得Java在网络环境下可以更为安全的运行。理解Java的安全模型,可以帮助咱们站在更高的层面理解Java的底层实现,在适当的时机及时找出问题所在。html
沙箱模型的创建主要涉及了Java语言相关的如下几个部分:编程
运行时包:指由同一个类加载器装载的、属于同一个包的、多类型的集合。任意两个Java类包访问权限适用的前提是:属于同一个包,还必须是属于同一个运行时包。这样规定的动机之一就是防止一个由用户自定义类加载器装载的Java类非法获取到Java核心API的包访问权限。数组
例如:经过动态类加载一个名为Java.lang.Virus的Java类可以被装载到内存,因为这个类是属于包Java.lang。若是不加以限制,这个外部的类就会拥有包内其余类的包访问权限。安全
双亲托管模型:保证基本Java类库不会被恶意代码任意覆盖,具体的内容能够参考我以前的文章。网络
类文件的校验通常有四个步骤:编程语言
包括了以下几个方面:编码
检测Java虚拟机堆外部资源访问的合法性,即界定沙盒的边界。不会被默认设置,若是须要检测在编码中须要自行编写。参见Java.lang.SecurityManager下的一系列以“check”开头的方法。操作系统