重点摘要
下载应用前,应先了解其使用的权限,并评估个人数据被窃取的风险。这篇2015年4月的文章解释了后台线程可能持续运行并消耗电量,以及不必要的权限为何会引发安全疑虑。
每次开机后,您最先使用哪个应用?Facebook?Whatsapp?还是查看电子邮件?通常,我们会到 App Store 或 Google Play 下载喜欢的应用,完成自己想做的事情……时间一长,就会发现即使手机充满了电,闲置时电量也会很快耗尽。此外,关于手机遭窃听、感染病毒等事件的新闻也不少,网上还有许多教程建议手机用户格式化手机、备份数据。因此,我想从编程和用户的角度分享一些心得。
1. 关机不一定意味着完全停止运行,您无法知道应用在后台运行什么程序
在计算机领域,后台运行的程序称为线程(Thread)。线程与主程序分开,独立在后台运行。只要在后台编写一个回调方法(callback method),就可以定期更新主页。在 Android / iOS 中,线程有三种类型:执行单个任务、重复执行一个任务,甚至持续使用一个后端类(Backend Class)。
对于以上所有线程,如果用户没有通过设置让它们停止运行,或调出应用堆栈(App Stack)将其滑动清除,手机电量就会很快耗尽。即使按正常步骤退出应用,线程也未必会停止运行。
如果您有开发Android 应用的经验,就会明白,所有开机和关机流程最初都是通过捕获按钮事件来触发的。即使退出某个应用,开发者创建的线程仍需要用户进入设置才能停止运行。
黑客可以在关机过程中捕获按下和松开按钮的触发事件,并运行线程来执行任何操作。如果您已经为手机获取了 root 权限,或将 iPhone 越狱,应用甚至可以窃取所有用户数据,以及联系人列表中的电子邮件地址和电话号码。
2. 要求过多不必要权限的应用,其安全性令人质疑。
不少应用开发者,尤其是专注于Android 开发的开发者,会多启用几项权限,以便改进应用。这种情况在拍照应用和手电筒应用中尤为严重:
稍加留意就会发现,打开闪光灯与开启 Wi-Fi、读取用户数据毫无关系。然而,用户一旦急于使用,往往就不会注意应用要求获取手机上的哪些权限。此外,Google 与 Apple 在审核应用能否上架时,处理方式也大不相同。Google 只会扫描 APK 一次,检查是否存在明显的木马,以及内容是否符合要求,最快两小时后就能成功上架;Apple 则需要数周。提交截图和文字描述后,整个审核过程均由人工完成。如果应用需要与其他电子设备通信或配合使用,Apple 应用审核人员还会要求开发者提交一段演示视频,让其他人了解如何使用该应用。因此,人们通常更容易相信 iOS 应用比 Android 应用安全。
由此可见,使用应用虽然方便,但也暗藏风险。下载应用前,请先停下来想一想:自己是否真正理解应用所使用的权限,并评估过个人数据被窃取的风险。至于将数据存放在云端是否安全,就留待日后有机会再讨论。