因此我们安装了Java 7u21版本,该版本应该会加强applet的安全性。不幸的是,它收紧了很多,以至于我们的applet不再运行了。不好。
有趣的是,它只在我们使用JWS操作时才停止工作。如果我们从标准网页将其作为标准小程序启动,一切正常。
在JWS模式下,我们至少会在反射和java.lang.Thread.setDefaultUncaughtExceptionHandler
上遇到安全问题。
证书看起来不错。
来自Oracle的发行说明没有提供任何与JWS相关的内容。
我对社区的问题是:是否有人有想法或(甚至更好)解决这个问题?
与给定建议/评论相关的其他信息:
此applet由全球数百个第三方客户运营,因此不幸的是,更改安全策略是不可取的。该问题对于客户来说是可重现的。 但我可以确认更改策略文件可以解决问题。
当我从Eclipse启动的Tomcat运行applet时(因此当然没有签名的applet),它会按预期在浏览器中显示警告通知。作为一个容易上当的人,我允许applet运行,因为它是从我自己的开发环境启动的。 这仍然会导致安全性失败。
我已经考虑过,如果这是Java中的错误,但我想看看是否有其他人看到同样的问题。我想我们都知道修复错误的Oracle周转时间并不总是最好的......
感谢您的任何意见。
非常感谢Tony,你的建议让我能够在7u21中创建applet,正确地说;我认为这是一个向前的步骤,我正在通过浏览器签署和唤醒许多小程序,这些超过7u21。我今天早些时候不想这样做。但是我被困了好几个小时,事实上我还没有从我的遗留应用程序中唤醒我的第一个第三方小程序(即在JVM 1.6或更旧版本中工作正常)。
所涉及的applet,我签了他们,但我总是得到错误:SecurityException - “Bad applet class name”。我有一些小程序,并且html代码调用它们,问题是我的第一个applet链(在调用链中没有任何其他)可能不像其他签名applet那样正在做(这些applet来自java网站进行培训),这个第3方applet简单不运行并抛出上面提到的异常。 我的第三部分applet我不知道它在内部做了什么。对不起,如果没有源代码,我可能会要求一个不容易解决的特殊情况,但是,无论如何,请相信告诉我任何想法。
最好的问候
答案 0 :(得分:4)
以下是解释它的页面。
您需要做的是让所有的jar都在清单文件中获取新的TrustedLibrary行。对我来说,这意味着重新编译旧代码。你可能只是解开当前的罐子,然后重新加入包括TrustedLibrary线。
您还必须签署所有代码。不只是小程序。这意味着如果你有3个罐子,那么所有3个罐子里的所有代码也必须签名。
答案 1 :(得分:4)
我的同事破解了它。给波兰人提供伏特加有时可以产生所需的灵感。 : - )
无论如何,似乎现在在发送到applet的jnlp信息中需要安全标记(返回的内容类型设置为application / x-java-jnlp-file)。
添加
<security> <all-permissions/> </security>
它有效。
希望这有帮助。
答案 2 :(得分:1)
以下来自Java SE文档的Security页面的引用是相关的:
“标准的java策略文件可用于增强授予不受信任的应用程序的权限。除了
$JRE_HOME/lib/security/java.policy
和$USER_HOME/.java.policy
(由所有java程序使用)之外,还加载了应用程序和applet通过Java Web Start和Java Plug-in加载另外两个策略文件,其位置可以通过部署配置属性进行配置:deployment.user.security.policy和deployment.system.security.policy。“
检查这些位置的政策文件。
答案 3 :(得分:1)
使用未签名小程序的所有开发人员的附加提示。 上周在JAX2013会议上,来自Oracle的Wolfgang Weigand提到,在2013年10月Java 7发布之后,将只有最高级别的applet安全滑块,即只有使用可信(非自签名)证书签名的applet才能运行。 截至目前,此信息尚未在官方Oracle网站上发布。
由于Java平台中最新的安全性变化,上面引用JAVA6安全性页面的答案可能有点过时