1

在有人问我为什么要这样做,或者建议我签署小程序,或者在 J2EE 客户端权限下通过 JWS 部署它之前,这纯粹是出于学术原因并满足我自己的好奇心。

我正在尝试提供一个 VM 参数 (java.security.policy) 来指向用于管理相关小程序的策略文件,如下所示,但它似乎被忽略了,始终引发安全异常。我在 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>

(爪哇)

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;
};
4

1 回答 1

1
<PARAM name="java_arguments" value="-Djava.security.policy=C:\Frustrated.policy">

如果可以通过小程序参数建立自定义策略,那将是一个(严重的)安全漏洞。

作为旁白。鉴于这是出于“纯粹的学术原因”,我将添加我的常见建议之一。小程序和学术界。

为什么要编写小程序?如果是由于规范。老师,请参考为什么 CS 老师应该停止教授 Java 小程序

于 2013-09-07T03:18:50.957 回答