13

在 Java 更新 19 之前,我签名的 Java 小程序一直运行良好。现在,我们在 Java 更新 19 上的一些但不是所有用户报告了一条 Java 安全消息,指出我们的小程序包含签名和未签名的代码。

创建我们的小程序的过程如下:

  1. 在 Netbeans IDE 中清理和构建小程序项目。
  2. 在 WinRAR 中打开 Applet jar 文件并将所需的 mysql JDBC 驱动程序 .class 文件添加到 jar 文件中。
  3. 签署小程序 jar 文件。

有人可以告诉我如何确定我们的小程序中哪些代码已签名,哪些代码未签名?除了将 jar 文件内容复制到我们的 applet jar 文件中之外,有没有更好的方法将 mysql JDBC 驱动程序 jar 文件包含在我们的 applet 中?

谢谢

4

3 回答 3

14

编辑:由于 Java 7 Update 45 中的错误,您不应将 Trusted-Library 添加到清单文件中。只需添加新属性 Caller-Allowable-Codebase。有关更多信息,请参阅此问题:Java 小程序清单 - 允许所有 Caller-Allowable-Codebase

Java 7 Update 21 于 2013 年 4 月 16 日发布,导致我们的小程序开始显示此警告对话框。

根据发行说明:从 JDK 7u21 开始,在特权小程序中调用代码的 JavaScript 代码被视为混合代码,如果签名的 JAR 文件未使用 Trusted-Library 属性标记,则会引发警告对话框。

要解决此问题,请编辑您的 manifest.mf 文件并添加如下一行:

Trusted-Library: true

不过,在这样做之前你应该非常小心。如果可以从 javascript 调用您签名的小程序,那么恶意用户可能会在您用户的计算机上做有害的事情。

保护您的小程序的一种快速方法是防止它在其他网站上运行。通过将代码放入init()查看并在getCodeBase().getHost()与您的站点不匹配时抛出异常的方法中来做到这一点。

Java 7 Update 25 引入了另一种方法来限制可以运行您的小程序的站点。您可以像这样在清单文件中设置 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

如果您销售的产品包含一个小程序并且您不知道它可以部署在哪些域上,您可以在此处填充 *。

于 2013-04-18T17:14:09.230 回答
11

一些事情要尝试:

  • 转到 java 插件控制面板 ($JAVA_HOME/bin/ControlPanel)。
  • 转到Advanced选项卡。
  • 扩张Debug
  • 检查Enable tracing,Enable loggingShow applet lifecycle exceptions
  • 扩张Java console
  • 查看Show console
  • 单击OK(或Close,取决于您的操作系统)

当您的小程序加载时,Java 控制台将打开。单击它并立即按“5”。它将记录为运行您的小程序而获取的 jar 和类。在此的某处应该有一条消息,指示哪些 jar 或类被认为是“未签名的”。如果您第一次错过它,只需重新加载窗口以重试。

于 2010-04-11T03:32:32.737 回答
2

将受信任和不受信任的代码混合在一起是一个漏洞,该漏洞已在 6u19(撰写本文时的当前 CPU/SSR 版本)中修复。请参阅文档。阻止混合或使用调试器应该可以显示问题所在。

于 2010-04-09T14:54:24.637 回答