我的签名Java applet在Java更新19之前一直运行正常.现在Java Update 19上的一些但不是所有用户都报告了一条java安全消息,指出我们的applet包含有符号和无符号代码.
创建applet的过程如下:
在Netbeans IDE中清理并构建applet项目.
在WinRAR中打开Applet jar文件,并将所需的mysql JDBC驱动程序.class文件添加到jar文件中.
签署applet jar文件.
有人可以告诉我如何确定签署的代码以及我们的applet中没有签署的代码?有没有更好的方法将mysql JDBC驱动程序jar文件包含在我们的applet中,而不是将jar文件内容复制到我们的applet jar文件中?
谢谢
编辑:由于Java 7 Update 45中的错误,您不应将Trusted-Library添加到清单文件中.只需添加新属性Caller-Allowable-Codebase.有关更多信息,请参阅此问题:Java applet清单 - 允许所有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()
查看的方法中getCodeBase().getHost()
并在与您的站点不匹配时抛出异常来执行此操作.
Java 7 Update 25引入了另一种限制可以运行applet的站点的方法.您可以在清单文件中设置Codebase属性,如下所示:
Codebase: test.example.com www.example.com
Java 7 Update 45(2013年10月16日发布)引入了对LiveConnect系统(javascript-to-applet桥)的更多更改,这些更改可能会导致另一个提示.本文讨论了7u45的变化:https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45
基本上,您还需要将以下内容添加到清单文件中以避免提示:
Caller-Allowable-Codebase: test.example.com www.example.com
如果您正在销售包含applet的产品,并且您不知道可以部署哪些域,则可以在此处填充*.
有些事要尝试:
转到java插件控制面板($ JAVA_HOME/bin/ControlPanel).
转到Advanced
选项卡.
扩大 Debug
检查Enable tracing
,Enable logging
和Show applet lifecycle exceptions
扩大 Java console
校验 Show console
单击OK
(或Close
,取决于您的操作系统)
当您的applet加载时,Java控制台将打开.单击它并立即按"5".它将记录正在获取的jar和类以运行您的applet.在这里的某处应该有一条消息,表明哪些罐子或类被认为是"无符号的".如果你第一次错过它,只需重新加载窗口再试一次.