微信公共平台开放了几个操作webview界面的js接口
示例代码是这样的:

WeixinJSBridge.invoke('getNetworkType',{},
    function(e){
        WeixinJSBridge.log(e.err_msg);
    });

android的webview api中有开放过一个addJavaScriptInterface函数,这个函数的作用是在页面的Window中注入一个JS对象
如果你的应用中使用了这个api,建议先看一下国内安全领域第一人黑哥的这篇文章android webview 漏洞背后的节操,

没耐心的同学直接看结尾的解决方案吧:

第1个方案是设置信任域,这个问题其实是不太靠谱的,在我之前在kcon里演讲《去年跨过的浏览器》里有很多信任域带来的安全问题
第2个方案是使用 shouldOverrideUrlLoading 的方式,据说这个方案还是比较靠谱的,只是可能代价比较大
第3个方案就是教育那些开发商,没有必要用webview的时候就不要用,不要java与js交互就不要用

不过,按黑哥这篇文章的想法,这个漏洞危险等级很低,可以无视之
暂时把安全问题放一边,Js对象的注入,对函数的参数类型有严格要求,它只能传递基本数据类型以及JSON
但微信的JsApi中,参数三是一个函数对象,那他是如果做到的呢

逆向

Android原生的机制既然不能支持函数对象的传递,于是猜测微信是否会对原始的api做了一层包装;
先下载weixin …


查看全文
Posted by zhengwen