沙箱安全模型
传统的安全模式中,运行一个软件前你必须信任他,而沙箱安全模型接收任何来源的代码,沙箱限制了此段代码进行可能破坏系统的任何动作
组成JAVA沙箱的基本组件如下:
类装载器体系结构
他防止恶意代码去干涉善意的代码
举例1. 当自定义的类java.lang.HashMap被装载时,首先将请求传递给双亲类装载器,然后这个类就一直被委派到启动类装载器,此时启动类装载器可以找到这个类,它就不会在已安装的扩展中查到这个类,也不必在类路径查找这个类型,同样也不必在网上下载这个类。2. 如果要求网络类装载器装载一个名为java.lang.Virus的类时,同样会被委派到启动类装载器,此时启动类装载器找不到这个类,已安装的扩展及类路径都找不到,则去网上下载这个类
说明:由于例2,这里引入运行时包的概念
同一个包下的类可以相互访问,但前提是加载类的类加载器也要相同。例2中的Virus类是由网络类加载器加载,而同一包下的其他类是由启动类加载器加载的。则Virus类对其java.lang包下的其他类没有访问权限。
class文件检验器
保证装载的class文件内容有正确的内部结构,并且这些class文件相互协调一致。
文件检验器要进行四趟独立的扫描来完成它的操作,第一趟扫描是在内为装载时进行的,为了检验文件的内部结构,保证安全的编译,第二,第三趟扫描是在连接过程中进行的class文件,确认函数类型,遵从java编程语言,包括其字节码的完整性。第四趟扫描是在进行动态链接的过程中解析符号引用时进行的,Class文件检验器确认被引用的类,字段以及方法确实存在。
JAVA虚拟机中的内置安全特性
虚拟机装载一个类,对它进行第一到第三趟的文件检查,这些字节码就可以被运行了。
java安全模型的前三个组成部分:类装载器体系结构,class文件检验器以及class中内置的安全特性一起达到一个共同的目的:保持JAVA虚拟机的实例和正在运行的应用程序的内部完整性,使他们不被下载了恶意或有漏洞的代码侵犯
安全管理器和Java Api
JAVA Api在进行任何可能不安全的操作时,他都会向安全管理器请求许可,从而强制执行自定义安全策略。一般来说,如果一个受检查的动作被禁止,将会抛出一个异常。
本文发布于:2024-02-01 06:41:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674087634626.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |