保护富 Internet 应用程序的准则

以下准则提供了可采取的步骤,以减少提供给用户的 Rich Internet Applications(RIA)的漏洞。

遵守安全编码准则

请遵循Java 编程语言的安全编码准则中的建议。第 4 节“可访问性和可扩展性”描述了如何限制对类和包的可访问性,从而减少了代码的脆弱性。

JavaScript 代码被视为不安全,默认情况下仅限于安全沙箱。最小化您的 RIA 和 JavaScript 代码之间的交互。请谨慎使用AccessController\.doPrivileged块,因为它允许从任何 HTML 页面或 JavaScript 代码进行访问。

测试最新版本的 JRE

确保您的 RIA 在最新,安全的 JRE 版本上运行。 Java 平台支持 RIA 指定运行 RIA 所需的 Java 版本的能力,但是,要求用户维护一个以上的 JRE 版本,尤其是较旧的不安全版本,对用户来说存在安全风险。

RIA 的好处之一是 RIA 的更新版本会自动下载到用户的系统中。针对 JRE 的每次更新对 RIA 进行测试,并确保其有效。如果需要更改,请在服务器上更新 RIA,以便用户可以安装最新的 JRE 并仍运行 RIA。

包含清单属性

在 JAR 文件清单中添加描述 RIA 属性的属性。将 JNLP 文件或applet标记中的值与清单中的值进行比较,以验证是否运行了正确的代码。

当您的 RIA 不需要超出安全沙箱的访问权限时,请请求沙箱权限。 Java 沙箱为用户提供了额外的保护,如果用户不理解特权应用程序为何要求对他们的系统进行无限制访问的原因,它们可能不会运行。

清单属性还可以用于标识可从其访问 RIA 的位置。这包括 JavaScript 代码可以从中调用 RIA 的位置,以及可以启动 RIA 的 JNLP 文件或 applet 标签的位置。有关可用清单属性的信息,请参见使用清单属性增强安全性

使用签名的 JNLP 文件

如果 RIA 需要访问非安全系统属性或 JVM 参数,请使用签名的 JNLP。如果需要在外部和内部 JNLP 文件之间进行一些更改,请使用 JNLP 模板。有关信息,请参见《 Java 平台标准版部署指南》中的签名的 JNLP 文件

要访问非安全系统属性或 JVM 参数,请按设置可信参数和安全属性所述在 JNLP 文件中包含该属性或参数。

签名和时间戳 JAR 文件

从受信任的证书颁发机构获取代码签名证书,并使用它来签名 RIA 的 JAR 文件。仅将使用有效证书签名的 RIA 部署给用户。

在对 JAR 文件签名时,还要对签名进行时间戳记。时间戳验证证书在 JAR 签名时是否有效,因此在证书过期时不会自动阻止 RIA。有关签名和时间戳的信息,请参见签名 JAR 文件

自签名和未签名的 RIA 被认为是不安全的,除非将 exception 站点列表或部署规则集设置为允许特定的应用程序,否则不允许运行。但是,自签名可用于测试 Object。要使用自签名 RIA 进行测试,可以将自签名证书导入受信任的密钥库。

使用 HTTPS 协议

对用户从其获取 RIA 的 Web 服务器使用 HTTPS 协议。服务器对 HTTPS 协议进行加密和验证,这使任何人更难以篡改 RIA。

避免使用本地 RIA

本地 RIA 不适用于生产。为确保用户运行您打算运行的代码,请将 RIA 托管在应用程序服务器上。

为了进行测试,建议使用 Web 服务器。另一个选项是将您的应用程序添加到 exception 站点列表,该列表在 Java 控制面板的“安全性”选项卡中进行 管理。