在 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 版本会捕获它在最近应用程序列表中使用缩览图的屏幕快照。此屏幕快照存储在设备内存中,攻击者可以通过该设备的物理控件访问该快照。
如果您的应用程序显示敏感信息,则您应保护此类信息,防止被背景屏幕快照捕获。由 NativeApplication 对象调度的
deactivate
事件表示应用程序将要切换到背景。使用此事件可以清除或隐藏所有敏感信息。