读书人

Java保险结构 沙盒模型

发布时间: 2012-09-02 21:00:34 作者: rapoo

Java安全结构 沙盒模型

在阶段1,校验器除了检查字节码的完整性,还要检查类文件的格式和内部一致性。例如,每一个类文件都必须以同样的4字节数字0xCAFEBASE开头,这样类文件校验器可能检查的第一件事就是引入的文件是否以0xCAFEBASE开头。

类文件校验器还要校验类文件的长度是否与类文件中所记录的长度一致,也即校验类文件是否完整,是否被截去一部分或者被添加。类文件校验器还要检查类是否遵循Java语言的规定,如除了Object类,所有的类都必须有1个父类等。

2.字节码校验

一旦类文件校验器成功地完成格式和内部一致性的检查,就开始对字节码进行校验。通过对代表类方法的字节码流进行数据流分析,进行操作码是否有效及操作码是否有有效的操作数等的检查,以验证字节码流是否可以由虚拟机安全执行。

1.3.2符号引用的校验

符号引用是给出了引用项的名字和其它信息的字符串,这些信息足以用来区分类、域或方法。符号引用的校验用来验证引用是否有效,如果引用无效(例如,如果类不能载入,或者类存在但不含有要引用的域或方法),类文件校验器就会抛出1个错误。

1.4 安全管理器和JAVA API

安全管理器定义了“沙盒”的外部边界。安全管理器是类java.lang.SecurityManager的子类,它是自定义的。

JAVA API类在采取一些行动时,通常需要安全管理器检查这个行动是否安全,这些行动包括:

1.接受来自于特定主机的socket连接。

2.修改线程(改变线程优先级,结束线程等)。

3.开放对于特定主机的socket连接。

4.创建1个新的类载入器。

5.删除特定的文件。

6.创建新的过程。

7.程序退出。

8.调用含有本地方法的动态库。

9.等待连接。

10.从特定的包载入类。

11.给特定的包中添加1个新类。

12.访问或修改系统特性。

13.访问特定的系统特性。

14.读文件。

15.写文件。

由于在执行上述动作前需要安全管理器进行检查,JAVA API不执行安全管理器建立的安全措施所禁止的任何动作。

JAVA API执行1个可能不安全活动的过程,通常分为2步:首先,JAVA API代码检查安全管理器是否已安装。如果没有安装,就无法进行第2步的检查,则直接执行可能不安全的代码;如果安装了,就继续执行第2步的检查,调用安全管理器中合适的检查方法对动作进行检查,如果动作被禁止,检查方法就抛出1个安全例外,不再执行不安全的活动;如果动作被允许,检查方法返回,JAVA API方法继续执行动作。

结束语

安全的可靠性是和代价成正比的,安全的可靠性越高,为安全付出的代价也越高,因此安全的可靠性也并不是越高越好,应该与被保护的信息的价值相当。计算机或网络的安全策略应该是多方面的,仅仅有1个运行下载的JAVA代码的“沙盒”是不够的,还应包括人员、机器等本身的安全,例如机器是否设置有口令、雇员是否是商业间谍等。但是JAVA安全模型的好处在于一旦建立,就可以为程序员做很多事情,程序员不必担心程序是否安全,JAVA的安全结构已经对程序是否安全进行了确定,如果代码不安全,利用“沙盒”结构就可以保护信息免受破坏。

读书人网 >编程

热点推荐