Hybrid App(混合式開發)已經是每一個商業應用都會使用的開發手段。其最大的優勢就是將一些可動態更新的內容頁面使用 H5 開發,然後借用移動端原生系統提供的 WebView 控制項加載進來。這種方式不僅能夠節約安卓和 iOS 兩個客戶端的開發人力成本,還能在避免應用版本迭代的情況下動態更新頁面內容。然而,WebView 有一個弊端,就是始終無法避免的安全問題。
比如,你連接的 WI-FI 可能會被一些網絡運營商惡意攔截 DNS 系統,當你打開應用的 WebView 時,會在頁面底部或者其他地方看到莫名其妙的廣告內容。更有甚者,直接重定向到其他網頁,對應用或者設備隨意操作,存在很大的安全隱患。
Google 一直也在致力於處理這個問題。最近,就有了一些進展。根據 Android Developers 官方博客介紹,從 Android O 開始,WebView 將採用獨立於託管應用之外的進程來進行渲染器,提供隔離空間。
這種做法與 Chrome 瀏覽器類似,使得 WebView 擁有兩級隔離:
WebView 渲染引擎剝離出獨立進程。這樣,也就不會存在由於 WebView 的加載錯誤導致我們的主應用發生崩潰問題,而且第三方惡意網站也很難通過渲染器攻擊託管應用。
在隔離的進程沙盒中運行的渲染器進程,被限制使用設備資源。比如,渲染器不能自行向磁碟寫入數據,或者進行網絡通信等。這種隔離能夠進一步防禦惡意攻擊。
安全瀏覽模式下的最新版 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。
相關拓展內容:
隨心而賞~