9.5.1 Applet的安全限制

9.5.1 Applet的安全限制

Applet被设计为从远程站点下载然后在本地执行,所以安全问题非常重要。如果用户在游览器中启用了Java,那么浏览器就会自动下载网页中的Applet代码并执行。用户没有机会来确认或者停止Applet的运行。基于这样的原因,与Application应用程序相比,Applet被作了限制。

Java对Applet最主要的限制如下:

1.不允许对Applet创建、修改或删除本地机上的文件。

2.不允许Applet检查本地机上的文件是否存在。

3.不允许Applet检查目录的内容。

4.不允许Applet读写本地机上的文件。

5.检查文件的属性。例如:不允许检查文件的大小、类型和最后更改时间等。

6.Applet不能充当网络服务器,监听或接收来自远程系统的连接请求。

7.Applet不能执行任何本地机上的程序。

8.不允许Applet装载动态库或定义本地方法调用。

9.不允许Applet在本地机上创建目录。

10.不允许Applet关闭本地机上的Java虚拟机。

11.不允许Applet在本地机上创建对象。

12.不允许Applet操纵不在自己线程组中的任何其他线程。

除此之外,在Java环境中,对于一些标准的系统属性,Java应用程序可以通过一些方法来读写这些属性;但对于Java Applet而言,许多重要的系统属性都是只允许读、不允许修改,这些属性包括java.class,java.path,java.home和java.version等。

在某些情况下,这些限制显得过于严格。为了允许不同情况下使用不同的安全级别,Java引入了签名Applet。一个签名Applet带有一个能够表明签名者特征的证书。加密技术保证了这样的证书不可能被伪造。如果信任签名者,那么可以选择给该Applet额外的特权。被完全信任的Applet可以获得同本地应用程序一样的访问特权。