|
虽然 AIR 应用程序是使用 Web 技术构建的,但开发人员应知道这些应用程序并不在浏览器安全模型中运行,这一点很重要。这意味着,可以构建会对本地系统有意或无意产生损害的 AIR 应用程序。AIR 会尝试最大程度降低此风险,但仍存在一些可能引入漏洞的方式。本节介绍了重要的潜在不安全因素。有关构建避免这些风险的应用程序的最佳做法,请参阅开发人员文档。
将文件导入应用程序安全沙箱的风险
应用程序沙箱中的内容具有运行时的完全权限。建议开发人员考虑以下问题:
-
仅在必要时才在 AIR 文件(位于安装的应用程序中)中包含文件。
-
仅在脚本文件的行为被完全理解和信任时才在 AIR 文件(位于安装的应用程序中)中包含该脚本文件。
-
不要将网络源中的数据用作可能引起代码异常的 AIR API 的方法的参数。
Adobe AIR 可防止应用程序沙箱中的内容将来自网络的数据作为代码使用,以免无意中执行恶意代码。这包括使用 ActionScript
Loader.loadBytes()
方法和 JavaScript
eval()
函数。
使用外部源确定路径的风险
使用外部数据或内容可能会破坏 AIR 应用程序。因此,应用程序在使用网络或文件系统中的数据时应特别小心。信任责任主要取决于开发人员以及他们建立的网络连接,但加载外来数据本身具有风险,不应将其用作敏感操作的输入。建议开发人员不要执行以下操作:
使用、存储或传输无保护凭据的风险
将用户凭据存储在用户的本地文件系统中将引入可能破坏这些凭据的风险。建议开发人员考虑以下问题:
-
如果凭据必须存储在本地,请在写入本地文件系统时对凭据进行加密。Adobe AIR 为每个安装的应用程序都提供唯一的加密存储区,开发人员文档中对此进行了详细介绍。
-
不要将未加密的用户凭据传送到网络源,除非该来源受信任,并且传输协议使用传输层安全性 (TLS),即使用 https: 或 SecureSocket 类。
-
永远不要在创建凭据时指定默认密码,应让用户自己创建密码。保留默认值的用户会将其凭据公开给已经知道默认密码的攻击者。
接收或传送远程数据的风险
当信息通过 Internet 进行传输时,有可能被监听和更改。您可以使用传输层安全 (TLS) 或更旧的安全套接字层 (SSL) 协议对服务器和客户端系统之间的通信进行加密。使用 HTTPS 协议保护超文本协议 (HTTP) 通信。使用 SecureSocket 类保护 TCP 套接字通信。在这两种情况下,提供数据的服务器必须使用 TLS 或 SSL,以便使您的 AIR 应用程序能安全地发送或接收数据。SecureSocket 类已在 AIR 2 中添加,可由 AIR 应用程序沙箱中运行的内容使用。建议开发人员考虑以下问题:
-
对服务器所承载的使用所支持的最新版本的 TLS 协议的敏感数据提供访问。(目前,AIR 支持 TLS 版本 1 和 SSL 版本 4。)
-
使用 HTTPS 传送或接收使用 HTTP 协议的敏感数据。
-
使用 SecureSocket 类传送或接收使用 TCP 套接字的敏感数据。
降级攻击的风险
在安装应用程序过程中,运行时会进行检查以确保应用程序的版本不是当前安装的版本。如果应用程序已经安装,则运行时会将现有应用程序的版本字符串与正在安装的版本进行比较。如果此字符串不同,则用户可以选择升级安装。运行时无法保证新安装的版本比旧版本新,仅保证版本不同。攻击者可能会向用户分发旧版本以避开安全漏洞。采取相应措施可以降低这种风险,开发人员文档提供了实现规避风险的版本架构和更新检查的最佳做法。
|
|
|