美文网首页
WebView调用JS的注意事项

WebView调用JS的注意事项

作者: 小小卒_oO_ | 来源:发表于2019-03-08 17:37 被阅读0次

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
为了让webview可执行JS脚本,需要添加如上代码行。但同时需要注意以下:

1.远程代码执行漏洞

移除以下默认接口以确保应用安全:

mWebView.removeJavascriptInterface("searchBoxJavaBridge_");
mWebView.removeJavascriptInterface("accessibility");
mWebView.removeJavascriptInterface("accessibilityTraversal");

2.Android4.2以后,为JS暴露的接口,都需要加@JavascriptInterface

mWebView.addJavascriptInterface(new MyPicJavaScript(getApplicationContext()), "imagelistner"); // JS回调

private class MyPicJavaScript {
        private MyPicJavaScript(Context context) {
        }

        @JavascriptInterface
        public void openImage(String img) {
            Intent intent = new Intent(getApplicationContext(), PicNoContentActivity.class);
            intent.putStringArrayListExtra("picList", picList);
            intent.putExtra("currentImg", img);
            startActivity(intent);
        }
    }

例如如上所示,使用JS回调去实现某功能。
这个接口允许JavaScript 控制宿主应用程序,在4.2的版本前存在重大安全隐患。因为JavaScript 可以使用反射访问注入webview的java对象的public fields。在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。
所以openImage()方法需要额外的注解@JavascriptInterface,这样,这个Java对象的fields 将不允许被JS访问。

参考链接:
https://blog.csdn.net/zgjxwl/article/details/9627685
http://nickycc.lofter.com/post/23e2a6_29f4fdf

相关文章

网友评论

      本文标题:WebView调用JS的注意事项

      本文链接:https://www.haomeiwen.com/subject/ddarpqtx.html