众所周知,通过浏览器访问Applet存在安全漏洞,jdk1.6及更早的一些版本一直存在这些问题,为了解决Applet的安全漏洞问题,在jdk1.7陆续发布了几个用于修补安全漏洞的jdk版本。相关版本更新简图如下:
一、 jdk1.7 update21版本
详情链接:
英文:https://blogs.oracle.com/java/entry/java_se_7_update_21
中文:http://www.java.com/zh_CN/download/help/appsecuritydialogs.xml
Java 7 Update 21引入了对 Java 浏览器插件行为的更改,使您可以在浏览器中运行 Java 小应用程序之前做出更知情的决策。将出现安全提示,要求先确认,然后才允许在浏览器中运行 Java 内容。
此版本修补的安全漏洞内容包括:
(1)JAR黑名单和证书:甲骨文公司现在管理着一个jar黑名单和证书库,该数据会在客户端上首次执行Java applet或启动web应用时进行更新。
(2)更改了Java控制面板中的安全设置,确保本地applet运行在一个安全的JRE上。自签名或未签名的jar不在被允许
(3)安全对话框:在该版本中,在特权applet内部调用代码的JavaScript代码将被为混合代码,并会在JAR文件没有被标上Trusted-Library(受信任库)属性时弹出警告对话框。该版本中,RMI属性java.rmi.server.useCodebaseOnly默认为true,之前版本为false。
(4)新增了一个Server JRE包,包含了用于服务器部署的常用工具,专门针对在服务器环境中部署Java运行时。
(5)支持Linux on ARM,处理器包括ARMv6和ARMv7。但目前不支持Java WebStart、Java Plug-In、Garbage First (G1) Collector、JavaFX SDK或JavaFX运行时等特性。
(6)更改了Runtime.exec
在jdk7u21及更高版本情况下,当运行仅仅自签名的jar时候会弹出一下对话框。此时对【不再对来自以上发行者和位置的应用程序显示此消息】打钩后,之后再浏览将不再弹出该提示框。
另外当客户端java control panel未导入【签名者 CA】证书或当使用证书颁发机构 (CA) 无法验证的证书运行应用程序时,会显示此对话框。
二、jdk1.7 update45版本
详情链接:
英文:中文:
http://www.java.com/zh_CN/download/help/trusted_signed_variations.xml
自 Java 版本 7 Update 45 起,增加了针对 Java 应用程序执行的安全增强功能。当web页面发起LiveConnect对RIA的调用时,如果没有正确签名或配置,会出现一个新的安全警告。安全警告框可能如下:
从7u45开始,应用程序开发者可以指定新的JAR manifest文件属性包括:
- Application-Name:该属性为RIA提供了一个安全标题
- Caller-Allowable-Codebase:该属性指定了允许JavaScript调用Applet类的代码库/位置
只要满足如下条件,即可进行JavaScriptto Java调用:
- JAR由一个【可信任的证书】签署,有Caller-Allowable-Codebase manifest入口,且JavaScript运行在相匹配的域中
- JAR未签名,JavaScript调用发生在与JAR相同的域中
可通过以下方式消除或避免该弹出框:
1.在入口jar中设置manifest 属性:Caller-Allowable-Codebase和Permissions 。
2.在Java Control Panel中导入【可信任的证书】。
3.在Java Co ntrol Panel中设置【混合代码(沙箱代码与可信代码)安全验证】为【启用-隐藏警告并在保护下运行】。
三、dk1.7 update51版本
详情链接:
英文:http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html
中文:
http://www.java.com/zh_CN/download/faq/exception_sitelist.xml
http://www.java.com/zh_CN/download/faq/signed_code.xml
自 Java 版本 7 Update 45 起,增加了针对 Java 应用程序执行的安全增强功能。对富 Internet 应用程序(RIA,也称为小应用程序和 Web Start 应用程序)的增强功能主要包括以下:
(1)来自可信颁发机构的代码签名。小应用程序和 Web Start 应用程序的所有代码必须进行签名,不论其权限属性如何。
(2)清单属性
- 权限 - 在 7u25 中引入,从 7u51 开始是必需的。指示 RIA 应在沙盒中运行还是需要完整权限。
- ·代码库 - 在 7u25 中引入,从 7u51 开始是可选/推荐的。指向托管代码的已知位置。
自 Java 版本 7 Update 51 起,未对RIA签名时候,客户端将弹出对话框阻止jar的运行,如下图(不容版本的阻止框可能有所不同):
另外,在 Java 7 Update 51 发行版中引入了“例外站点”列表功能。通过将应用程序 URL 添加到例外列表中,用户可以运行通常被安全检查阻止的 Rich Internet Application (RIA)。
下面列出了可通过将应用程序 URL 添加到“例外站点”列表以允许应用程序运行的情况:
- ·未使用可信证书颁发机构发布的证书对应用程序进行签名。
- ·应用程序在本地托管。
- ·Jar 文件不具有“权限”清单属性。
- ·使用过期证书对应用程序进行了签名。
- ·无法检查用于对应用程序进行签名的证书是否已撤销。
因此,在Java 7 Update 51以后的版本中可以通过添加例外站点的方式来运行缺少相关权限的jar运行,也是一种权宜之计。