在有人问我为什么我这样做,或建议我签署applet,或者在J2EE客户端权限下通过JWS部署它时,这纯粹是出于学术原因并满足我自己的好奇心
我正在尝试提供一个VM参数(java.security.policy)来指向用于管理相关applet的策略文件,如下所示,但它似乎被忽略,一直引发安全异常。我在Oracle的文档中找不到任何内容,表明这是预期的。任何人都可以为我阐明这一点吗?感谢
(结果)
java.security.AccessControlException: access denied ("java.io.FilePermission" "frustrated.txt" "write")
(HTML)
<html>
<body>
<applet name ="Frustrated"
code="com.test.Main.class"
archive="Frustrated.jar"
width="100"
height="100"
>
<PARAM name="separate_jvm" value="true">
<PARAM name="java_arguments" value="-Djava.security.policy=C:\Frustrated.policy">
</applet>
</body>
</html>
(Java)的
package com.test;
import java.applet.Applet;
import java.io.FileOutputStream;
import java.io.IOException;
@SuppressWarnings("serial")
public class Main extends Applet
{
@Override
public final void init()
{
try
{
new FileOutputStream("frustrated.txt");
}
catch (IOException e) { }
}
}
(策略)
grant
{
permission java.security.AllPermission;
};
答案 0 :(得分:1)
<PARAM name="java_arguments" value="-Djava.security.policy=C:\Frustrated.policy">
如果可以通过applet参数建立自定义策略,那将是一个(严重的)安全漏洞。
暂且不说。鉴于这是“纯粹的学术原因”我将添加我的一个共同建议。小应用程序和学术界。
为什么要编写applet?如果是由于规格。请教老师,请参阅Why CS teachers should stop teaching Java applets。