Android-WebView和優(yōu)化

Webview資源預(yù)加載

在Android?的BaseApplication里初始化一個(gè)WebView對象(用于加載常用的H5頁面資源);當(dāng)需使用這些頁面時(shí)再從BaseApplication里取過來直接使。提早加載將需使用的H5頁面,即提前構(gòu)建緩存。

一個(gè)加載網(wǎng)頁的過程中,native、網(wǎng)絡(luò)、后端處理、CPU都會(huì)參與,各自都有必要的工作和依賴關(guān)系;讓他們相互并行處理而不是相互阻塞才可以讓網(wǎng)頁加載更快:

①WebView初始化慢,可以在初始化同時(shí)先請求數(shù)據(jù),讓后端和網(wǎng)絡(luò)不要閑著。

②后端處理慢,可以讓服務(wù)器分trunk輸出,在后端計(jì)算的同時(shí)前端也加載網(wǎng)絡(luò)靜態(tài)資源。

③腳本執(zhí)行慢,就讓腳本在最后運(yùn)行,不阻塞頁面解析。

④同時(shí),合理的預(yù)加載、預(yù)緩存可以讓加載速度的瓶頸更小。

⑤WebView初始化慢,就隨時(shí)初始化好一個(gè)WebView待用。

⑥D(zhuǎn)NS和鏈接慢,想辦法復(fù)用客戶端使用的域名和鏈接。

⑦腳本執(zhí)行慢,可以把框架代碼拆分出來,在請求頁面之前就執(zhí)行好。



WebView中,主要漏洞有三類:

任意代碼執(zhí)行漏洞

原因有三個(gè):(Google 在Android 4.2 版本中規(guī)定對被調(diào)用的函數(shù)以?@JavascriptInterface進(jìn)行注解從而避免漏洞攻擊;android 4.2之前我們不用去關(guān)心了)

? ?(1)WebView 中 addJavascriptInterface() 接口

? ?(2)WebView 內(nèi)置導(dǎo)出的 searchBoxJavaBridge_對象

? ?(3)WebView 內(nèi)置導(dǎo)出的 accessibility 和 accessibilityTraversalObject 對象

密碼明文存儲漏洞

WebView默認(rèn)開啟密碼保存功能。開啟后,在用戶輸入密碼時(shí),會(huì)彈出提示框:詢問用戶是否保存密碼;如果選擇”是”,密碼會(huì)被明文保到 /data/data/com.package.name/databases/webview.db 中,這樣就有被盜取密碼的危險(xiǎn)

解決方案

關(guān)閉密碼保存提醒,WebSettings.setSavePassword(false)。

域控制不嚴(yán)格漏洞

即 A 應(yīng)用可以通過 B 應(yīng)用導(dǎo)出的 Activity 讓 B 應(yīng)用加載一個(gè)惡意的 file 協(xié)議的 url,從而可以獲取 B 應(yīng)用的內(nèi)部私有文件,從而帶來數(shù)據(jù)泄露威脅。

解決方案


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容