Android O 讓安裝應(yīng)用更安全
部分觀察仔細(xì)的用戶會(huì)注意到 Android O 的一個(gè)新特性:“允許未知來(lái)源” 的設(shè)置已經(jīng)消失不見(jiàn)。要知道,這是在此前的 Android 版本中,安裝 Google Play 或是其他認(rèn)證商店之外的應(yīng)用所必經(jīng)的設(shè)置。本文就圍繞新的未知來(lái)源應(yīng)用安裝許可,以及它為用戶以及開(kāi)發(fā)者所帶來(lái)的益處展開(kāi)。
前段時(shí)間我們發(fā)布了 Google Play 保護(hù)機(jī)制 (Google Play Protect),它能夠全面且實(shí)時(shí)地保護(hù)您的設(shè)備。不同于第三方來(lái)源軟件中會(huì)攜帶有潛在有害應(yīng)用 (PHAs) ,Google Play 仍然是目前最安全的應(yīng)用來(lái)源地。
潛在有害應(yīng)用開(kāi)發(fā)者的常見(jiàn)套路,是通過(guò)惡意下載器 (hostile downloader) 來(lái)加載他們的應(yīng)用。試舉一例,某個(gè)游戲應(yīng)用中或許并不包含惡意代碼,但它會(huì)將潛在有害應(yīng)用偽裝為一項(xiàng)重要升級(jí),繼而安裝到用戶的設(shè)備之上 (更多關(guān)于惡意下載器的信息請(qǐng)查閱 2016 年 Android 安全性總覽) 。用戶只要允許了未知來(lái)源應(yīng)用安裝,就很容易讓這樣狡詐的手段得逞。
上圖中左 (預(yù)覽版 Android O) :潛在有害應(yīng)用偽裝為系統(tǒng)升級(jí)的安裝界面;右 (Android O) :潛在有害應(yīng)用安裝前,首先需要用戶允許該 App 進(jìn)行安裝
在 Android O 系統(tǒng)下,安裝未知來(lái)源應(yīng)用許可會(huì)使得該操作的安全性更高。就像其他的運(yùn)行時(shí)權(quán)限 (runtime permissions) 一樣,該項(xiàng)許可與觸發(fā)安裝的 App 綁定。確保在彈出安裝頁(yè)面之前,先讓用戶確認(rèn)安裝權(quán)限。在安裝了 Android O 或更高版本系統(tǒng)的設(shè)備上,惡意下載器就無(wú)法在用戶獲得提示之前,誘導(dǎo)用戶進(jìn)行安裝。
新的許可機(jī)制能夠?yàn)橛脩籼峁┩该骰?,可控且線性的可信任來(lái)源安裝許可。在設(shè)置中,用戶能夠看到已經(jīng)允許安裝未知來(lái)源 App 的應(yīng)用列表。用戶也可按照自身需求,隨時(shí)撤回某個(gè)應(yīng)用的許可。
上圖中隨時(shí)都能夠查看已允許安裝未知來(lái)源 App 的應(yīng)用列表。如需讓獲取許可更具效率,開(kāi)發(fā)者可在安裝過(guò)程中,直接讓用戶跳轉(zhuǎn)至許可界面。
開(kāi)發(fā)者層面的變動(dòng)
如要利用這一新的許可機(jī)制,通過(guò)包安裝器 (Package Installer) 下載以及安裝其他 App 的應(yīng)用開(kāi)發(fā)者們需要作出一些變動(dòng)。如果應(yīng)用在使用 26 或更高級(jí)別的 targetSdkLevel 來(lái)引導(dǎo)用戶安裝其他 App,那么清單文件則需要包括 REQUEST_INSTALL_PACKAGES 許可:
- <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
沒(méi)有聲明此項(xiàng)許可的應(yīng)用無(wú)法安裝其他 App。對(duì)于無(wú) App 安裝需求的應(yīng)用來(lái)說(shuō),這是一種非常方便的安保辦法。開(kāi)發(fā)者可以通過(guò) ACTION_MANAGE_UNKNOWN_APP_SOURCES 意圖動(dòng)作 (Intent action),讓用戶直接跳轉(zhuǎn)到安裝 未知來(lái)源應(yīng)用 (Install unknown apps) 的界面。也可以通過(guò)使用包管理器 (PackageManager) canRequestPackageInstalls ( ) API,查詢安裝許可的狀態(tài)。
請(qǐng)記住,如果這些 App 已在 Google Play 上發(fā)布,而且能夠安裝和更新其他應(yīng)用,那么 Google Play 政策法規(guī) 仍然適用。絕大多數(shù)情況下,這種行為并不恰當(dāng);相反,您應(yīng)該在 Google Play Store 的應(yīng)用列表中提供一個(gè)深層鏈接 (deep-link)。
請(qǐng)確保已經(jīng)了解更多有關(guān)安裝未知來(lái)源應(yīng)用的發(fā)布指南,并關(guān)注與 Android O 安全性相關(guān)的更多公告。
【本文是51CTO專欄機(jī)構(gòu)“谷歌開(kāi)發(fā)者”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者(微信公眾號(hào):Google_Developers)】