富 Internet 应用程序中的安全性

富 Internet 应用程序(RIA)背后的安全模型可保护用户免受恶意 Internet 应用程序的侵害。本主题讨论 Servlets 和 Java Web Start 应用程序共有的安全性方面。有关更多信息,请参见以下主题:

可以将 RIA 限制为 Java 安全沙箱,也可以请求访问沙箱外部资源的权限。首次启动 RIA 时,系统会提示用户授予运行权限。显示的对话框提供了有关签名者证书的信息,并指示 RIA 是否请求在沙箱外部运行的权限。然后,用户可以就运行该应用程序做出明智的决定。

应用以下准则来帮助保护您的 RIA。

  • 使用公认的证书颁发机构签发的证书对 RIA 的 JAR 文件签名。有关更多信息,请参见签名和验证 JAR 文件

  • 如果 RIA 要求在安全沙箱外部进行访问,请在 JNLP 文件中为 RIA 指定all-permissions元素。否则,请让 RIA 默认在安全沙箱中运行。以下代码段显示了 RIA 的 JNLP 文件中的all-permissions元素。

<security>
   <all-permissions/>
</security>

如果使用了 applet 标签,请参阅使用 Applet 标签进行部署以获取有关设置权限级别的信息。

  • JNLP 文件只能包含由同一证书签名的 JAR 文件。如果您有使用不同证书签名的 JAR 文件,请在单独的 JNLP 文件中指定它们。在 RIA 的主 JNLP 文件中,指定component-desc元素以将其他 JNLP 文件包括为组件 extensions。有关信息,请参见JNLP 文件的结构

  • RIA 的安全模型不允许网页中的 JavaScript 代码调用已签名的 JAR 文件中的安全敏感代码,除非您明确启用此功能。在签名的 JAR 文件中,将您希望 JavaScript 代码能够调用的代码部分包装在AccessController.doPrivileged块中。当执行doPrivileged代码块中的代码时,这允许 JavaScript 代码以提升的权限运行。

  • 如果可能,请避免在 RIA 中混合使用特权组件和沙箱组件,因为它们会引发有关混合代码的安全警告。有关更多信息,请参见混合特权代码和沙盒代码

  • 在 JAR 文件清单中包括PermissionsCodebase属性,以确保您的 RIA 仅请求您指定的权限,并且可以从正确的位置访问 RIA。有关信息,请参见用于安全性的 JAR 文件清单属性

  • 通过 JAR 文件清单属性,您可以限制对 RIA 的访问,并有助于确保代码不会被篡改。有关所有可用的 JAR 文件清单属性的信息,请参见使用清单属性增强安全性