首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应用Policy文件控制Applet权限

2013-07-16 
使用Policy文件控制Applet权限本文介绍在Java平台上如何访问受限资源,比如读写一个文件。我们通过配置polic

使用Policy文件控制Applet权限

本文介绍在Java平台上如何访问受限资源,比如读写一个文件。我们通过配置policy文件来使得一个未签名的applet访问系统的受限资源。本文主要由以下内容组成:

对于Applet的限制如何配置Policy文件如何使Policy生效?对于Applet的限制

Java插件使用Security Manager来防止病毒通过applet侵入你的系统。如果未签名的applet想访问某个系统资源,Security Manager会检查对应的权限是否已经授权,未授权的applet无法访问系统资源。授权需要配置policy文件中的entry。

?

Oracle官方提供了一个applet的例子。

?由代码可知,该applet的功能是创建并写一个名为writetest的文件。当然,在没有修改policy文件前,操作应该被禁止。

?

在你的command窗口输入以下命令去执行该applet:


?

从图上可以看到,工具并没有显示任何的policy信息。那是因为,工具启动后会尝试读取用户的policy文件并把对应的信息显示在界面上。用户的policy文件默认以.java.policy来命名。它会保存在用户的Home目录下。如果没找到policy文件,则空白显示,如上图。接着我们会创建一个新的policy文件。

?

授权

Entry是权限的载体。单击‘Add Policy Entry’按钮来创建一个新的entry。接着,你会看到Policy Entry对话框,如下图:

应用Policy文件控制Applet权限
?

单个entry可以指定一个或多个权限。代码来自于特定的代码源(URL),代码被特定的entity签名。

CodeBase和SignedBy文本框指定哪些代码需要授权。

CodeBase代表代码源路径。你授权的代码就来自于这个值所对应的路径。注意,空值代表任何代码。SignedBy代表keystore中证书的alias。证书中的公钥用于验证代码的数字签名。代码使用该公钥对应的私钥来签名。SignedBy这个栏位是选填的。不填,代表了"any signer",系统不care代码是否签名,是谁签的。

我们继续使用WriteFile这个例子。如果你想让这个applet拥有创建和写文件的权限,你可以在CodeBase栏位输入:

?


?
?请按照以下步骤授权:

1. 在Permission下拉框选择FilePermission

2. 在Target Name下拉框右侧的文本框内输入writetest。这是你想授权的文件的文件名。

3. 在Actions下拉框内选择write。

?

完成后如下图:

应用Policy文件控制Applet权限
?

点击OK按钮后,界面如下:

应用Policy文件控制Applet权限
?

?点击Done按钮,配置结束。

?

保存Policy文件

点击File菜单,选择Save As后,填写文件名examplepolicy,选择保存路径后,点击Save按钮保存。导航到你指定的目录,打开Policy文件,你会看到如下语句:

注意文件后缀最好是.java.policy。?

?

如何使Policy生效

既然我们已经创建好Policy文件,就可以再次使用WriteFile applet做个测试。

当你使用security manager运行一个应用的时候,被指定在如下特定文件中的Policy文件会被默认加载。

appletviewer http://docs.oracle.com/javase/tutorial/security/tour1/examples/WriteFile.html

?

?

热点排行