java - 小程序必须授予什么权限才能写入临时文件?

标签 java security file permissions applet

我们正在开发一个小程序,需要它能够读取/写入用户临时文件目录(例如 C:\Documents and Settings\USERNAME\Local Settings\Temp)中的文件。

小程序已签名,用户在小程序启动时单击“允许”选项,并且 Java 控制面板具有“允许用户授予对已签名内容的权限”和“允许用户对来自不受信任的机构的内容授予权限”启用。

但是,在启动时,我们得到一个 SecurityException:

java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at com.jniwrapper.util.AppletHelper.b(SourceFile:104)
at com.jniwrapper.util.AppletHelper.a(SourceFile:79)
at com.jniwrapper.util.AppletHelper.b(SourceFile:50)
at com.jniwrapper.util.AppletHelper.init(SourceFile:122)
at com.x.Y.init(Y.java:31)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception: java.lang.SecurityException: Unable to create temporary file

如果我们编辑 java.policy 文件以授予所有权限,那么小程序可以正常工作,但这显然是不安全的。我们必须授予什么最小权限才能允许小程序在用户的临时文件目录中读取/写入/创建文件?

最佳答案

使用策略文件进行测试是可以的,但你不应该依赖它来完成你的代码,尤其是在授予文件权限时,这是很危险的。

要与文件交互,您需要执行以下操作。

  1. 在您的 jar 上签名 - 大量教程,例如 this ,你可以只做一个自签名的。

  2. 将文件创建代码添加到特权 block 这里是一个例子

    File myFile = (File) AccessController.doPrivileged(new PrivilegedAction() {
    public Object run() 
    {
        return new File("C:\\MyFolder\\MyFile");
    }
    
    });
    

关于java - 小程序必须授予什么权限才能写入临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369365/

相关文章:

java - 快速滚动大字母缩略图预览未出现

java - 计算抢占式最短作业优先调度算法的平均等待时间

java - Flex 文件下载

ios - 如何为移动应用程序授予对我的api的访问权限?

database - 将密码存储在数据库中

python - 如何将图像从其路径保存到 FileField?

java - T 的使用扩展了 U?

security - 用于宏分发的签名证书

Android - 由于 errno=13,读取文件列表失败

c++ - 管道输入数据