2017-02-09 81 views
35

我在签名的Java小程序中具有以下清单信息。我的构建环境比较陈旧,目前仅限于JDK 1.6。警告依赖于Caller-Allowable-Codebase属性始终未显示

Manifest-Version: 1.0 
Implementation-Vendor: Foo, Inc. 
Application-Library-Allowable-Codebase: * 
Application-Name: FooBar 
Permissions: all-permissions 
Sealed: true 
Created-By: 1.6.0_20 (Sun Microsystems Inc.) 
Caller-Allowable-Codebase: * 
Codebase: https://* 

根据Java documentation -

如果独立的星号(*)或具有顶级 域中使用一个星号,如*。组织被指定为 值Caller-Allowable-Codebase属性,然后从JavaScript代码 调用您的RIA显示安全警告。用户可以选择允许 呼叫或阻止呼叫。记住选择的选项也是 提供。如果用户选择记住该选项,则当它从同一来源的JavaScript代码接收到呼叫 时,将不会再显示相同RIA的警告消息。

我的Web应用程序中的Java脚本代码依赖于来自Applet的返回代码,以在门户上显示适当的状态。显示的消息取决于返回的状态代码。但是为了发生这种情况,应该会出现Java警告窗口。在Firefox v51 & JRE 1.8.121中,有时会出现此警告窗口。如果没有,则JavaScript和Applet之间的通信不存在。什么可能是警告窗口不会一直出现的问题?

+0

你能提供一个可重复的例子吗?请参阅https://stackoverflow.com/help/mcve和http://sscce.org/ 此外,您是否调试过(调试日志记录等),以便知道发生了什么事情,当您不*获取警告对话框时? – pyb

+0

Java小应用程序是旧的,并将在java 9中被弃用,而且浏览器正在移除对java插件的支持 – niceman

+0

如果可能的话,用HTML5和JS重新构建前端,可能使用jQuery来调用Web应用程序的AJAX,它正确。如果没有,你的产品是非常注定的。另外,你的配置对你的Applet来说是非常不安全的 - 任何代码库,全部权限。我真的希望你能够很好地验证,因为那只是乞求代码注入攻击。这是小苹果无法继续使用的主要原因之一 - 缺乏体面的安全性。 – TinkerTenorSoftwareGuy

回答

1

我使用相同的实时连接方法在applet和Javascript之间进行通信。在过去的几年中,我从JRE6u45到目前的JRE8u131都遇到过许多不同的警告屏幕。这取决于您现在面临的警告屏幕。

你每次都用Firefox吗?自从某个版本see here以后,Firefox不支持Java插件。仅供参考,Chrome和MS Edge不支持Java Applet。请检查您是否没有使用它们。

调用者允许的代码库属性不应该触发任何警告。如果它没有正确包含域,它应该阻止小程序运行。应该没有警告信息允许您运行。

一般而言,大多数警告屏幕来自JRE而不是浏览器。因此您还可以检查以下项目:

  • 代码签名证书有效且未过期。
  • 转到Java控制面板,清除小程序缓存(在常规选项卡)
  • 启用Java检验内容(安全选项卡)
  • 恢复安全提示(安全选项卡)
  • 启用混合代码,如果以示警告需要(高级选项卡)
  • 启用日志记录和跟踪,显示Java控制台(Java控制面板 - >安全选项卡)

请提供更多细节屏幕或警告你的消息。