Android WebView控件跨域访问高危漏洞问题解析

问题描述

详见:关于Android平台WebView控件存在跨域访问高危漏洞的安全公告。简单来说就是js脚本可以访问到系统的私有文件,导致用户信息的泄漏。

问题复现

WebView加载下列Html数据可以查看到系统的host文件的内容:




    
    
    
    
    
    用户协议


用户协议

content

问题修复

api版本>=16,可采用如下设置:

WebSettings settings = vWeb.getSettings();
if (Build.VERSION.SDK_INT > 15) {
    settings.setAllowFileAccessFromFileURLs(true);
    settings.setAllowUniversalAccessFromFileURLs(true);
}

api版本<16,可以设置文件白名单,如下:

    private class MyWebViewClient extends WebViewClient {
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
            return isSafeSource(url) ? null : new WebResourceResponse(null, null, null);
        }

        private boolean isSafeSource(String url) {
            //以下为白名单
            return url.startsWith("file:///android_asset")
                    || url.startsWith("file:///data/data/" + getContext().getPackageName())
                    || url.startsWith("file://" + getContext().getFilesDir());
        }
    }

你可能感兴趣的:(Android WebView控件跨域访问高危漏洞问题解析)