1. 程式人生 > >webView常見漏洞以及解決方法

webView常見漏洞以及解決方法

1.Android 4.4 之前的版本 webkit 中內建了”searchBoxJavaBridge_”介面。攻擊者可通過訪問searchBoxJavaBridge_介面利用該漏洞執行任意Java程式碼。

解決方法:webView.removeJavascriptInterface("searchBoxjavaBridge_");

2.Android 4.4 之前的版本 WebView 內建導 出“accessibility”“accessibilityTraversal” 兩個JavaObject 介面,可被利用實現遠端任意程式碼執行。

解決方法:webView.removeJavascriptInterface("accessibility");    

webView.removeJavascriptInterface("accessibilityTraversal");

3.解決 WebView File域同源策略繞過漏洞,應用程式一旦使用WebView並支援File域,就會受到該漏洞的攻擊。該漏洞源於:JavaScript的延時執行能夠繞過file協議的同源檢查,並能夠訪問受害應用的所有私有檔案。 

解決方案:

setting.setAllowFileAccess(false);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {         

setting.setAllowFileAccessFromFileURLs(false);         

setting.setAllowUniversalAccessFromFileURLs(false);     

4.解決 WebView 密碼儲存漏洞,Android 系統 WebView 預設開啟密碼儲存功能 mWebView.setSavePassword(true) 

密碼沒有加密被儲存到/data/data/com.package.name/databases/webview.db。 

解決方案:關閉密碼儲存提醒功能,不儲存密碼,setting.setSavePassword(false);//關閉密碼儲存提醒功能 


5.遠端攻擊者可通過使用Java Reflection API利用該漏洞執行任意Java物件的方法

解決方案: 
Google 在 4.2 版本之後,規定允許被呼叫的函式必須以@JavascriptInterface 進行註解. 

低於4.2版本,我們不能再呼叫addJavascriptInterface方法。我們通過 JS中的prompt與Android應用進行通訊。Android對應的prompt資料接收。

public final boolean onJsPrompt(WebView view, String url, String message,             String defaultValue, JsPromptResult result) {                      

return super.onJsPrompt(view, url, message, defaultValue, result);     

}