# 富 Internet 应用程序中的安全性

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html](https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html)

富 Internet 应用程序（RIA）背后的安全模型可以保护用户免受恶意 Internet 应用程序的攻击。本主题讨论 applet 和 Java Web Start 应用程序常见的安全性方面。有关更多信息，请参阅以下主题：

*   [小程序可以做什么和不能做什么](../applet/security.html)
*   [Java Web Start and Security](../webstart/security.html)

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

应用以下指南来帮助保护您的 RIA。

*   使用来自认可的证书颁发机构的证书对 RIA 的 JAR 文件进行签名。有关更多信息，请参阅[签名和验证 JAR 文件](../jar/signindex.html)主题。
*   如果 RIA 需要在安全沙箱之外进行访问，请在 JNLP 文件中为 RIA 指定`all-permissions`元素。否则，让 RIA 默认在安全沙箱中运行。以下代码段显示了 RIA 的 JNLP 文件中的`all-permissions`元素。

    ```
    &lt;security&gt;
       &lt;all-permissions/&gt;
    &lt;/security&gt;

    ```

    如果使用 applet 标签，请参阅[使用 Applet 标签部署](../applet/html.html)以获取有关设置权限级别的信息。
*   JNLP 文件只能包含由同一证书签名的 JAR 文件。如果您有使用不同证书签名的 JAR 文件，请在单独的 JNLP 文件中指定它们。在 RIA 的主 JNLP 文件中，指定`component-desc`元素以包含其他 JNLP 文件作为组件扩展。有关信息，请参阅 JNLP 文件的[结构。](../deploymentInDepth/jnlpFileSyntax.html)
*   除非您明确启用此功能，否则 RIA 的安全模型不允许来自网页的 JavaScript 代码在签名的 JAR 文件中调用安全敏感代码。在签名的 JAR 文件中，包含希望 JavaScript 代码能够在 [`AccessController.doPrivileged`](https://docs.oracle.com/javase/8/docs/api/java/security/AccessController.html) 块中调用的代码部分。这允许 JavaScript 代码在执行`doPrivileged`代码块中的代码时以提升的权限运行。
*   如果可能，请避免在 RIA 中混合特权和沙箱组件，因为它们可能会引发有关混合代码的安全警告。有关详细信息，请参阅[混合特权代码和沙盒代码](https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/mixed_code.html)。
*   在 JAR 文件清单中包含`Permissions`和`Codebase`属性，以确保您的 RIA 仅请求您指定的权限，并且从正确的位置访问 RIA。有关信息，请参阅安全的 [JAR 文件清单属性。](https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/manifest.html)
*   JAR 文件清单属性使您可以限制对 RIA 的访问，并有助于确保您的代码不被篡改。有关所有可用的 JAR 文件清单属性的信息，请参阅[使用清单属性增强安全性](../jar/secman.html)。