開啟 Android WebView 的安全瀏覽模式

亦楓發表於2017-07-16

Hybrid App(混合式開發)已經是每一個商業應用都會使用的開發手段。其最大的優勢就是將一些可動態更新的內容頁面使用 H5 開發,然後借用移動端原生系統提供的 WebView 控制元件載入進來。這種方式不僅能夠節約安卓和 iOS 兩個客戶端的開發人力成本,還能在避免應用版本迭代的情況下動態更新頁面內容。然而,WebView 有一個弊端,就是始終無法避免的安全問題。

比如,你連線的 WI-FI 可能會被一些網路運營商惡意攔截 DNS 系統,當你開啟應用的 WebView 時,會在頁面底部或者其他地方看到莫名其妙的廣告內容。更有甚者,直接重定向到其他網頁,對應用或者裝置隨意操作,存在很大的安全隱患。

Google 一直也在致力於處理這個問題。最近,就有了一些進展。根據 Android Developers 官方部落格介紹,從 Android O 開始,WebView 將採用獨立於託管應用之外的程式來進行渲染器,提供隔離空間。

這種做法與 Chrome 瀏覽器類似,使得 WebView 擁有兩級隔離:

  1. WebView 渲染引擎剝離出獨立程式。這樣,也就不會存在由於 WebView 的載入錯誤導致我們的主應用發生崩潰問題,而且第三方惡意網站也很難通過渲染器攻擊託管應用。

  2. 在隔離的程式沙盒中執行的渲染器程式,被限制使用裝置資源。比如,渲染器不能自行向磁碟寫入資料,或者進行網路通訊等。這種隔離能夠進一步防禦惡意攻擊。

安全瀏覽模式下的最新版 WebView 還整合了 Google 安全瀏覽機制,來保護和提醒使用者可能存在風險的網站。啟用安全瀏覽配置後,WebView 將參考安全瀏覽的惡意軟體和釣魚網站資料庫檢查訪問的 URLs 地址,在使用者開啟之前給予危險提示,如:

講到這裡,你可能就要問了,如何啟動 WebView 安全瀏覽呢?很簡單,在我們應用的 Manifest 清單檔案中按照下面的程式碼簡單配置一下,便可以讓當前 App 中使用到的所有 WebView 都能支援安全瀏覽:

<manifest>
    <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
               android:value="true" />
    ...
    <application> ... </application>
</manifest>複製程式碼

由於 WebView 作為一個獨立的 APK 被分發使用的,截至目前,Android 5.0 及以上系統的裝置已經可以支援 WebView 安全瀏覽。而你只需要在清單檔案中新增如上配置程式碼,便可以讓你的混合式開發的應用更加安全。

文章備註:本文中部分內容翻譯自安卓開發者官方部落格,參考連結(需要翻牆):What’s new in WebView security

相關擴充內容:

關於我:亦楓,部落格地址:yifeng.studio/,新浪微博:IT亦楓

微信掃描二維碼,歡迎關注我的個人公眾號:安卓筆記俠

不僅分享我的原創技術文章,還有程式設計師的職場遐想

相關文章