让Applet拥有更高的访问权限

沙箱机制对Applet的安全性限制在浏览器或者appletviewer中运行远程主机上存放的Applet时,Java VM认为它是不可信任的,将其置于所谓sandbox的保护之下,在这样的情况下Applet的运行受到下面的限制 :

a) Applet不能读写客户端主机上的文件
b) Applet不能执行JCE/JCA中的addProvider操作
c) 在进行网络连接时Applet只能与提供它的服务器建立连接
d) Applet在事件捕获、读取系统信息等其他方面受到限制
e) 在Netscape浏览器中,不提供java.security.*的支持,在IE浏览器中对Applet的运行做了比appletviewer中更加高的限制

 

原来对Applet的上述安全限制只是常识性的掌握,直到最近在开发中遇到个小问题,才得以有机会去了解Applet的安全机制,在这里就不对

问题点:

客户端JRE1.6Update10的环境下,访问没有签名的Applet时,如果Applet中有弹出的对话框,对话框的右上角会有一个黄色的三角型安全警告(Icon的Tooltip是Java Applet),刚开始出现这个问题时是JRE的bug,但是最后在JRE1.6Update10的releasenote中发现了下面的一句话:

Unsigned Java Applet Window Change on Windows

On Windows, an unsigned applet that opens a new top level window has previously included a status banner on the bottom of the window to identify it as a "Java Applet Window". In 6u10, the banner has been replaced by a small triangular warning icon placed in the upper right corner. Hovering over the icon will provide the "Java Applet Window" message as a tooltip.

 

这Applet安全性的一部分,为了去掉这个“抢眼”的安全警告,总结出以下三种解决方法:

一:客户端引入对所有Applet都适用的policy文件。因为对所有的Applet都提高了权限,这样会让你的电脑“裸漏”在hack的眼皮底下。

二:服务器端对Applet进行数字签名。客户端在访问签名的Applet时,因为无法对该签名进行认证,会弹出一个警告对话框,选择执行按钮,这样这个签名的Applet就有了更多的权限。

三:服务器端对Applet进行签名,客户端引入只针对该Applet的policy文件,这样既避免了“裸漏”这种不光彩事情的发生,也不会像第二种方法在访问时,被人掏出黄牌警告。

具体如何去做policy文件和对Applet进行签名,网络上有很多这样的资料,在这里就不具体说明,还有一点,如果使用JDK自带的工具的话,最好看一下JDK的文档工具的使用这一章,里面介绍的最全,也最权威!

你可能感兴趣的:(java,jdk,浏览器,服务器,applet,sandbox)