use*_*250 3 java security permissions applet file
我们正在开发一个applet,需要它能够在用户的临时文件目录中读/写文件(例如C:\ Documents and Settings\USERNAME\Local Settings\Temp).
applet已签名,用户单击applet启动时的'allow'选项,并且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
Run Code Online (Sandbox Code Playgroud)
如果我们编辑java.policy文件以授予所有内容,那么applet工作正常,但这显然是不安全的.我们必须授予哪些最小权限才能允许applet在用户的临时文件目录中读/写/创建文件?
使用策略文件可以进行测试,但是您不应该依赖它来完成代码,特别是在授予文件权限时,这很危险.
要与文件交互,您需要执行以下操作.
登录您的罐子-吨像教程这样,你可以做一个自签名的一个.
这里是一个例子,将文件创建代码添加到特权块
File myFile = (File) AccessController.doPrivileged(new PrivilegedAction() {
public Object run()
{
return new File("C:\\MyFolder\\MyFile");
}
});
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
8229 次 |
| 最近记录: |