webView常見漏洞以及解決方法
1.Android 4.4 之前的版本 webkit 中內建了”searchBoxJavaBridge_”介面。攻擊者可通過訪問searchBoxJavaBridge_介面利用該漏洞執行任意Java程式碼。
解決方法:webView.removeJavascriptInterface("searchBoxjavaBridge_");
2.Android 4.4 之前的版本 WebView 內建導 出“accessibility”“accessibilityTraversal” 兩個JavaObject 介面,可被利用實現遠端任意程式碼執行。
解決方法:webView.removeJavascriptInterface("accessibility");
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);
}