|
在 Android 上,和在所有计算设备上一样,AIR 符合本机安全模型。同时,AIR 保持自己的安全性规则,旨在使开发人员轻松编写安全的、与 Internet 连接的应用程序。
因为 Android 上的 AIR 应用程序使用 Android 软件包格式,安装属于 Android 安全性模型。不使用 AIR 应用程序安装程序。
Android 安全性模型有三个主要方面:
Android 权限
Android 的许多功能由操作系统权限机制保护。为了使用某种保护的功能,AIR 应用程序描述符必须声明应用程序要求必要的权限。用户尝试安装应用程序时,Android 操作系统会在继续安装之前对用户显示所有请求的权限。
大多数 AIR 应用程序需要在应用程序描述符中指定 Android 权限。默认情况下,不包括任何权限。通过 AIR 运行时公开的受保护的 Android 功能需要下列权限:
-
ACCESS_COARSE_LOCATION
-
允许应用程序通过 Geolocation 类访问 WIFI 和移动电话网络位置数据。
-
ACCESS_FINE_LOCATION
-
允许应用程序通过 Geolocation 类访问 GPS 数据。
-
ACCESS_NETWORK_STATE 和 ACCESS_WIFI_STATE
-
允许应用程序通过 NetworkInfo 类访问网络信息。
-
CAMERA
-
允许应用程序访问摄像头。
-
INTERNET
-
允许应用程序提出网络请求。也允许远程调试。
-
READ_PHONE_STATE
-
允许 AIR 运行时在有来电时静音。
-
RECORD_AUDIO
-
允许应用程序访问麦克风。
-
WAKE_LOCK 和 DISABLE_KEYGUARD
-
允许应用程序使用 SystemIdleMode 类设置阻止设备休眠。
-
WRITE_EXTERNAL_STORAGE
-
允许应用程序写入设备上的外部存储卡。
应用程序签名
为 Android 平台创建的所有应用程序包都必须进行签名。由于 Android 上的 AIR 应用程序都以本机 Android APK 格式打包,因此根据 Android 约定而非 AIR 约定对其进行签名。尽管 Android 和 AIR 使用代码签名的方式相似,但存在显著区别:
-
在 Android 上,签名将验证开发人员是否持有私钥,但不用于验证开发人员的身份。
-
对于提交给 Android 市场的应用程序,证书必须至少在 25 年内有效。
-
Android 不支持将包签名迁移到其他证书。如果更新通过其他证书进行签名,则用户必须卸载原始应用程序后才能安装更新的应用程序。
-
两个使用相同证书签名的应用程序可以指定一个共享的 ID,以便允许它们访问彼此的缓存和数据文件。(这种共享不是由 AIR 促成的。)
应用程序用户 ID
Android 使用 Linux 内核。为每个安装的应用程序分配了 Linux 类型的用户 ID,该用户 ID 确定其进行文件访问等操作的权限。通过文件系统权限提供保护,防止对应用程序、应用程序存储和临时目录中的文件进行非授权访问。写入外部存储器(即 SD 卡)的文件在 SD 卡作为大容量存储设备安装到计算机上时,可以被其他应用程序或用户读取、修改和删除。
通过 Internet 请求接收的 Cookie 不会在各个 AIR 应用程序之间共享。
应用程序安装
默认情况下,Android 上的 AIR 应用程序使用一个由 Adobe 维护和更新的共享运行时库。从 AIR 3 开始,您可以将您的应用程序与一个“捕获的”运行时绑定。装有捕获的运行时的应用程序使用该版本的运行时 — 而不是共享的 AIR 运行时,该运行时也可以存在于设备上。当发布 AIR 运行时的新版本时,不会自动更新捕获的运行时。
重要说明:
如果使用捕获的运行时,当 Adobe 发布相关的安全更新时,您应负责更新该运行时。
Android 上的加密数据
Android 上的 AIR 应用程序可以使用内置 SQL 数据库中提供的加密选项保存加密数据。
可以使用 EncryptedLocalStore 类保存数据,但不会加密该数据。相反,Android 安全模型依赖于应用程序用户 ID 来保护其他应用程序的数据。使用共享用户·ID 并使用相同代码签名证书签名的应用程序使用相同的加密本地存储。
重要说明:
在根电话上,使用根权限运行的任何应用程序都可以访问任何其他应用程序的文件。因此,使用加密的本地存储所存储的数据在根设备上并不安全。
|
|
|