我的applet的策略文件位置需要客户端访问资源的权限?

时间:2009-09-13 09:12:13

标签: java security permissions applet

我发现我必须编写一个策略文件来授予我的applet权限......

但我真的很困惑...... :(

我想编写一个地图查看器的applet,我需要在运行我的applet的客户端上保存图像切片,以便本地访问切片以获得速度和时间,安全地查看对用户有益的地图...

因此,applet需要grant权限来读取/写入并在客户端tempdir上创建目录。

现在,我想编写一个策略文件以获得我的applet的权限,我不想让用户参与其中,而不是,我想自己编写策略文件来授予applet权限...

现在政策文件位置在哪里?在applet jar文件中? applet如何使用策略文件?

请帮帮我

3 个答案:

答案 0 :(得分:4)

简单的答案是否定的,您无法远程更改策略。如果您可以覆盖用户计算机上的策略,那么安全性在哪里?

在企业环境中,这可以通过桌面管理/配置系统实现。如果要进行测试,可以手动更新策略文件。它位于Windows上,

  ${user.home}\java.policy
  ${java.home}\lib\security\java.policy

第一个更改单个用户的策略,第二个更改影响整个系统。

答案 1 :(得分:4)

使用策略文件不是一个好主意,因为它对于用户来说太复杂了。 相反,你应该获得一个证书(费用$ 200 - $ 400 /年)并签署你的applet。将允许您访问文件。

您可以尝试免费生成的测试证书。 This可能有帮助。

答案 2 :(得分:2)

您需要对applet进行签名,然后将文件操作包装在这样的特权代码块中。

            final String location = locationVal;

    File f = (File) AccessController.doPrivileged(new PrivilegedAction()
    {
        public Object run()
        {
            System.out.println("Getting File : " + location);
            File outputFile1 = new File(location);
            return outputFile1;
        }
    });

作为参考,JRE策略文件的默认位置如下

在Windows机器上。

C:\ Program Files \ Java \ JRE Version \ lib \ security \ java.policy

Java 6更新13策略存储在此处

C:\ Program Files \ Java \ jre1.6.0_13 \ lib \ security \ java.policy

如上所述,您无法在无权访问本机的情况下编辑此文件。