WebView addJavascriptInterface接口中的隐忧解决方法

本文介绍了一个存在于API17以下版本的WebView中的安全漏洞,该漏洞可能导致客户端被利用从而泄露SD卡数据。文中提供了几种解决方案,包括过滤本地文件访问、限制加载非本站点网页以及移除默认添加的“searchBoxJavaBridge_”接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        我们自己没有添加addJavascriptInterface,甚至默认为false。但是还是有漏洞,因为在低于API17的WebView上默认添加"searchBoxJavaBridge_"到mJavaScriptObjects中。

        这样就有可能通过用户信任的客户端获取SD卡的数据。

        解决方法有几点:

        1. 过滤本地文件的访问: 

if (!url.startsWith("file://")) {
        // to do.
}
        2. 过滤未知网站(可以非本站点的都不允许加载)

        3. 删除默认添加的"searchBoxJavaBridge_"

// in WebView setting:
        if (Build.VERSION.SDK_INT > 10&&Build.VERSION.SDK_INT < 17) {
        	fixWebView();
        }

// fixWebView like this:
	@TargetApi(11)
    private void fixWebView() {
            //        http://50.56.33.56/blog/?p=314
            //        http://drops.wooyun.org/papers/548
            // We hadn't use addJavascriptInterface, but WebView add "searchBoxJavaBridge_" to mJavaScriptObjects below API 17 by default:
            // mJavaScriptObjects.put(SearchBoxImpl.JS_INTERFACE_NAME, mSearchBox);
            mWebView.removeJavascriptInterface("searchBoxJavaBridge_");
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值