你每次開機,第一時間會用邊隻 Apps ? Facebook ? Whatsapp ?定 check email 呢?一般而言,我們都會上 App Store 或Google Play 去下載心儀 Apps做自己想做的事‥‥‥等等。時間日久,我們會發現即使電話叉足電,閒置一邊,電池都會很快被耗盡。除此之外,也有不少電話被監聽,中毒等新聞,網絡上不少教學要機主格式化電話,備份資料,例如聯絡人和重要的相片檔案等。有見及此,小弟想從 programming 和用家角度去分享心得。

1. 熄機不一定是完全停止運作,用家永遠不知道 Apps 背後運行什麼程式

在 Computer Programming 的世界,背後運行的程式,叫做 Thread。Thread就是可以跟主程式分開,獨立進行的背景程式。只要背後寫成一個回應方式 (callback method) ,就可以定期更新主頁。在 Android / iOS 的世界中,有三種類型的 Thread :行單一個Task 、重覆行一個Task、什至連續一個 Backend Class 去使用。

table_thread

而以上所有Threads,如果不是用家設定教它停止運作,或用呼叫 App Stack 掃走,電話很快就會耗盡電力。即使用家依正常步驟離開Apps,背後的Threads 也未必停止運作。

如果大家有開發 Android App 的經驗,就會明白所有開機關機的程序都是先由截取按鈕的事件觸發的。即使你離開某 App ,如果開發者從中 行一個 Thread,是一定要要求用家到設定才叫它停止運作。

Hacker 可以從熄機的流程中截取按下和放開按鈕的觸發事件,可執行一個Thread去做愛做的事。如果你已經 root 了電話或 jail break 你的 iPhone, App 更可以轎竊取你的所有用戶資料和聯絡人名單的電郵和電話號碼。

解決方法:
用家:如非必要,不要 root 機或 jail break。不用的Apps 請盡早停止運作。
開發者:離開本App 前確保已經放開所有記憶體和停止運作所有 Thread 。

2.要使用太多無謂的權限的Apps,安全性教人懷疑。

不少Apps 開發者,特別專注 Android Developement 方面,都會多開幾個權限,方便開發者改良。尤以拍攝App、開閃光燈的App其嚴重:

如果用家稍為細心留意,就知道開閃光燈跟開 Wi-Fi、提取用戶資料是風馬牛不相及的事,然而,用家心急起來多數不為意App會提取你電話中什麼權限而已。另外,Google與Apple就審批一個 Apps 上架與否,處理方式大有不同。Google 只會掃描 APK一次,看看有沒有明顯的木馬,和內容是否符合要求,最快可以兩小時後就成功上架;Apple 卻要數個星期。截圖和文字描述被呈上後,全程由人手審批。如果要跟其他電子儀器溝通或配合,Apple App Reviewer 更會要求開發者呈交一段 Demonstration Video,好讓其他人明白如何使用那隻App。因此,一般人會更易相信 iOS App 比 Android App 安全。

解決方法:
用家:安裝Apps 前細心閱讀描述、條文、和相關使用權限。如提取用戶資料或通話狀態就要再三考慮。
開發者:做好設計,如必非要不要開放多餘的權限。

可以看到,使用Apps 雖然方便,但暗藏危機。下載 Apps 前,請停一停,諗一諗,是否真的清楚明白使用的權限和衡量個人資料被竊取的風險。至於放資料上雲端或所謂媾女媾仔的 Skout 是否安全,就留待日後有機會再講。