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