操作数字签名超越Java Applet的安全限制[Java编程]
本文“操作数字签名超越Java Applet的安全限制[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java技术之所以在本日得到了如此广漠的利用,此中它的安全性是不能不提的.差别于别的技术(比方Microsoft的ActiveX)中安全性作为附加计划和补钉,Java从计划之初便考虑到了安全性.因此Java的安全性是在语言层次实现的.Java的安全性由下列三个方面保证:
1、语言特点(包含数组的边界查抄、范例转换、撤消指针型变量).
2、资源拜候掌握(包含本地文件系统拜候、Socket衔接拜候).
3、代码数字签名(通过数字签名来确认代码源以及代码能否完好).
本文主要谈论结合后两种技术来实现超越Applet的安全限制.我们先来看一下这三个方面的具体实现.我们知道Java的原代码是先编译成为一种字节码的中间代码,存放这种代码的文件就是.class的文件.真正履行的时刻是将class文件装载到JVM(虚拟机)中,然后由JVM注释履行的.所以数组的上下界查抄及合理的范例转换是通过JVM得到保证的.
Java通过一个类装载器类(ClassLoader)将虚拟机代码文件(即class文件)装载到JVM中,当完成装载后,一个被称做安全管理器(SecurityManager)的类开始运行,这就是上面描写的第二个方面的实现.比方当一个Applet的class文件被缺省的类装载器装载到JVM中后,JVM会当即为它装载一个SecurityManager的子类AppletSecurity,由这个管理器来考证操作.代码的全部行动(比方文件读写)都要先经过考证,只有被该安全管理器承受的行动才能完成,不然就会抛出SecurityException非常.那么安全管理器类是怎么判断代码的权限的呢?这就是操纵Policy文件.
关于JDK1.0,权限被笼统的划分为两大块.一是拥有全部的权限,一个是仅拥有"沙箱"(sandBox)权限,这也是普通的Applet所拥有的权限.这时本地文件读写或是与源主机(Orignal Server)以外的主机衔接都是被禁止的.这种划分的最大问题就是贫乏机动性.比方我们但愿一个Applet在用户信任的情形下可以对本地文件系统的某个目录举行读写,但并不要通过Socket与别的主机衔接.这是JDK1.0的权限划分就不能到达要求.JDK1.1后改良了权限的划分,引入了权限集(PermissionSet)的概念.它细划了权限的放放面面,你可以有挑选性的组合你需求的权限来到达特别的要求.下图显示了这种划分:
图1
图一中的BasicPermission还可以进一步细分为更多的细节权限,比方:AWTPermission、RuntimePermission等等.Java通过一个后缀名为.policy的文件来组合这些权限.安装完JRE(Java Runtime Environment)后有两个缺省的权限文件,它们是:
${java.home}/lib/security/java.policy
${user.home}/.java.policy
以上是“操作数字签名超越Java Applet的安全限制[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |