我签名的Java applet在Java更新19之前一直运行良好。现在Java Update 19上的一些但并非所有用户都报告了一条java安全消息,指出我们的applet包含有符号和无符号代码。
创建applet的过程如下:
有人可以告诉我如何确定签名的代码以及我们的applet中没有签署的代码?有没有更好的方法将mysql JDBC驱动程序jar文件包含在我们的applet中,而不是将jar文件内容复制到我们的applet jar文件中?
由于
答案 0 :(得分:14)
编辑:由于Java 7 Update 45中的错误,您不应将Trusted-Library添加到清单文件中。只需添加新属性Caller-Allowable-Codebase。有关详细信息,请参阅此问题:Java applet manifest - Allow all Caller-Allowable-Codebase
Java 7 Update 21于2013年4月16日发布,导致我们的applet开始显示此警告对话框。
根据发行说明: 从JDK 7u21开始,调用特权applet中代码的JavaScript代码被视为混合代码,如果签名的JAR文件未使用Trusted-Library属性标记,则会引发警告对话框。
要解决此问题,请编辑manifest.mf文件并添加如下所示的行:
Trusted-Library: true
尽管如此,你应该非常小心。如果您可以通过javascript调用已签名的applet,则恶意用户可能会在用户的计算机上执行有害操作。
保护applet的一种快捷方法是阻止它在其他网站上运行。通过将代码放在查看init()
的{{1}}方法中,并在与您的网站不匹配时抛出异常来执行此操作。
Java 7 Update 25引入了另一种限制可以运行applet的站点的方法。您可以在清单文件中设置Codebase属性,如下所示:
getCodeBase().getHost()
Java 7 Update 45(2013年10月16日发布)引入了对LiveConnect系统(javascript-to-applet桥接器)的更多更改,这些更改可能会导致另一个提示。本文讨论了7u45的变化:https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45
基本上,您还需要将以下内容添加到清单文件中以避免提示:
Codebase: test.example.com www.example.com
如果您销售的产品包含小程序,并且您不知道可以部署哪些域,则可以填充*。
答案 1 :(得分:11)
有些事情要尝试:
Advanced
标签。Debug
Enable tracing
,Enable logging
和Show applet lifecycle exceptions
Java console
Show console
OK
(或Close
,具体取决于您的操作系统)当你的applet加载时,Java控制台将会打开。单击它并立即按“5”。它将记录正在获取的jar和类以运行您的applet。在这里的某处应该有一条消息,表明哪些罐子或类被认为是“无符号的”。如果你第一次错过它,只需重新加载窗口再试一次。
答案 2 :(得分:2)
将受信任和不受信任的代码混合在一起是一个已在6u19中修复的漏洞(撰写本文时的当前CPU / SSR版本)。 See the docs.阻止混音或使用调试器应该显示问题所在。