OS X JRE 6和7之间的Java applet安全模型不兼容:任何解决方法?

Jon*_*erg 7 java macos applet manifest wordle-game

我是Wordle的作者,Wordle是野外少数幸存的Java小程序之一.

最近,我收到用户报告,警告我的(已签名)applet很快将被JRE黑名单,因为它没有在其清单中明确指定"Permissions"属性.所以,现在MANIFEST.MF 正确指定了

    Permissions: sandbox
Run Code Online (Sandbox Code Playgroud)

<applet>标签包括神奇

    <param name="permissions" value="sandbox" />
Run Code Online (Sandbox Code Playgroud)

param,记录在案.

现在,那些向后弯腰安装OS X JRE 7的人可以毫无困难地运行Wordle,但是人们(像许多学校IT管理员一样)坚持使用JRE 6根本无法运行applet; 他们得到

java.lang.SecurityException: JAR manifest requested to run in sandbox only:
http://wordle.appspot.com/j/v1390/wordle.jar
    at com.sun.deploy.security.DeployManifestChecker.verify(DeployManifestChecker.java:106)
    at com.sun.deploy.security.DeployManifestChecker.verify(DeployManifestChecker.java:84)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:319)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:280)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:270)
    at sun.plugin2.applet.Plugin2Manager.isAppletSigned(Plugin2Manager.java:3289)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3207)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1536)
    at java.lang.Thread.run(Thread.java:695)`
Run Code Online (Sandbox Code Playgroud)

症状表明Java 6插件假定签名的applet应该以all-permissions模式运行,并认为sandbox清单中的请求是错误的.换句话说,它忽略permissionsapplet标签中的参数.

除了将applet设置为以all-permissions模式运行之外,有没有人知道我可以帮助我的用户?我宁愿保持沙盒,因为我不希望人们害怕使用Wordle,因为我不想创建一个攻击面.

小智 1

好吧,我尝试了很多!如果不是全部!我很确定没有办法让自签名的小程序在最新更新(1.6.0_65-b14-462-10M4609)的沙盒模式下运行。我唯一的机会就是

  • 降级到1.6.0_51
  • 从清单和小程序标签中完全删除权限标签和参数