由于Oracle的最新更改,我似乎必须签署一个applet,即使我不需要或希望它对用户的计算机具有不受限制的访问权限(这就是为什么它当前未签名)。特别是,我不希望他们为已签名的小程序显示警告:
此应用程序将以不受限制的访问方式运行,这可能会使您的计算机和个人信息面临风险。
......这会吓到使用它的人。
是否可以签署applet但是以某种方式标记它“但是继续使用沙箱”?
我签名的唯一原因是,从版本7更新40开始,Oracle进一步增加了用户在运行未签名的applet时必须处理的唠叨。过去,你可以检查一个信箱,说你曾经信任一个applet,那就会被记住。从Update 40开始,它只记得该浏览器会话;如果您关闭浏览器并稍后返回,则会再次出现警告。他们还说他们将完全在Java插件的“未来版本”中禁用未签名的applet。
答案 0 :(得分:17)
是的,你可以。 This page显示了如何执行此操作(嗯,大部分内容;您还需要this page)。主要有两个步骤:
将Permissions
和Codebase
属性放入清单文件中:
Permissions: sandbox Codebase: *.myserver.com
这些新属性是在Java 7 Update 25和are discussed here中引入的。上面链接的第一页只显示Codebase: myserver.com
,但大多数网站都需要上面的通配符。 (我不知道沙盒化applet是否需要Codebase
属性,但对大多数已签名的applet来说似乎都是个好主意。)
然后在构建jar时使用该清单文件,例如:
jar cvfm YourJarFile.jar your_manifest_file.txt classes_and_such
这些属性将在jar中的MANIFEST.MF文件中结束,该文件告诉Java运行时将applet保持为沙盒。
在<applet>
代码中,您必须指定permissions
参数,as discussed here:
<applet code='yourAppletClass' archive='YourJarFile.jar'> <param name="permissions" value="sandbox"> </applet>
如果没有第二步,则会阻止使用标题为“应用程序无法运行”的对话框运行请求jar中的沙箱权限而不是标记的签名小程序,并显示“原因:JAR清单请求仅在沙箱中运行” 。“
如果您执行上述两个步骤,则用户会收到更令人放心的消息(并且可能是小程序仍然是沙箱):
此应用程序将以限制访问的方式运行,旨在保护您的计算机和个人信息。
...如果他们检查信任发布者和位置的相关复选框,他们在下次打开浏览器并运行您的小程序时就不会再看到它。
(在提出这个问题的过程中,我找到了答案,但由于答案不在Stack Overflow上,我以为我会继续post the question and answer。) < / p>