Java applet清单 - 允许所有Caller-Allowable-Codebase

Wil*_*m W 65 java applet manifest signed-applet

从Java 7u45开始,如果网页尝试通过javascript与其进行交互,并且该页面未在清单的Caller-Allowable-Codebase属性中列出,则applet将显示警告消息(即使使用受信任的证书进行签名).

有关此更改的发行说明:http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html

有关此错误的Oracle博客文章:https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

属性描述:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable

我只尝试了一个通配符(*),但我仍然收到警告.

除了列出它可能运行的所有代码库之外,还有其他方法吗?

这对我来说是个问题的原因是这个小程序在许多不同的机器和网络上运行,但总是在不同位置的内部网上运行.这个小程序还需要与javascript通信,因为它与本地USB秤对话并显示结果并与页面交互.

警告消息示例

有问题的小程序:https://github.com/JaggedJax/CIO_Scale

fif*_*ffy 35

我的发现是一样的:

这可以防止使用Java 7u21 - 7u40发出警告:

Manifest-Version: 1.0
Trusted-Library: true
Run Code Online (Sandbox Code Playgroud)

这样可以防止使用Java 7u45发出警告:

Manifest-Version: 1.0
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Run Code Online (Sandbox Code Playgroud)

混合两者在7u45不起作用.

怎么办?有没有人找到一种方法来允许具有"所有权限"的SIGNED小程序在两个JRE版本中都没有警告的情况下运行?

甲骨文到底怎么了?

  • 确认我必须删除Trusted-Library以获取更新45.**并同意 - Oracle到底出了什么问题!** (19认同)

小智 26

删除Trusted-Library属性似乎必须使Caller-Allowable-Codebase正常工作,不再需要警告.但是,如果签名的JAR文件没有使用Trusted-Library = true属性标记,则会破坏Java 7 Update 21 - 40,它会处理调用带有所有权限的已签名applet中的代码的JavaScript代码,因为会出现混合代码和警告对话框.

  • 作为免责声明,我是Oracle产品管理博客上的一些帖子的作者,包括上面链接的帖子.虽然*Caller-Allowable-Codebase可以正常运行,但很明显为什么ISV需要它,那些可以指定它的人应该.有一篇文章涉及[浏览器僵尸网络](http://www.usatoday.com/story/cybertruth/2013/08/19/why-online-and-mobile-ads-are-ripe-for-hacking/2671491/)来自WhiteHat的演讲(在BlackHat).如果您有网址,请尽最大努力提供. (3认同)

vba*_*ail 10

根据oracle博客文章,这将在未来版本中修复:

https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

他们认识到错误"这两个属性应该协同工作以支持各种版本的客户端安装".但就目前而言,他们的解决方案是:"目前的解决方案是支持使用Caller-Allowable-Codebase而不是旧的Trusted-Library调用."


小智 6

我遇到过同样的问题.我的解决方案是在清单中使用相同的参数,就像Oracle在applet中的donwload页面上使用的验证java版本http://www.java.com/en/download/installed.jsp 他们的applet不会弹出任何警告.

所以解决方案是:


清单 - 版本:1.0
代码库:*
权限:所有权限
Application-Library-Allowable-Codebase:*
Caller-Allowable-Codebase:*
Application-Name:APPNAME

适用于:
1.7.0_17-b02
1.7.0_25-b17
1.7.0_45- b18

  • 它需要使用的是更新21到40,即引入可信库属性之后的更新.在此之前,我完全希望这些属性能够正常工作,因为它们会被忽略. (2认同)

rob*_*000 5

来自oracle:

区域:部署/插件概要:与Trusted-Library一起使用时,可以忽略Caller-Allowable-Codebase.

如果受信任的签名jar使用Caller-Allowable-Codebase清单属性以及Trusted-Library,则将忽略Caller-Allowable-Codebase清单条目,因此,JavaScript - > Java调用将显示本机LiveConnect警告.解决方法是删除Trusted-Library清单条目.

http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html