WebView安全漏洞问题

本文探讨了WebView在Android开发中的常见问题与解决方案,包括远程代码执行漏洞、内存泄漏、JsBridge实现、页面加载状态监测及后台耗电问题。

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

一、WebView常见的一些坑

        1、android API level 16 以及以前的版本存在远程代码执行漏洞,该漏洞由于程序没有正确限制使用webview.addJavascriptInterface方法,远程攻击者可以通过使用Java ReflectionAPI利用该漏洞执行任意Java对象方法。

          2、webview在布局文件中的使用:webview写在其他容器时,需要注意的是,当你需要销毁webview的时候在onDestory方法里面先把LinearLayout里面的webviewRemove掉然后再调用webview的removeAllViews和webview的destory方法这样才真正的销毁整个webview而不会导致内存泄漏问题。

            3、jsbridge:是一个很热门的技术,他是一个通过JavaScript与Java构建一个桥实际上JsBridge的却是Js和Native之前的一种通讯方法。简单地说,JsBrideg就是定义Native和Js的通讯,Native只通过一个固定的调用Js,Js也只通过固定的对象调用Native。

             4、webviewClient.onPageFinished->webChromeClient.onProgressChanged,前者就是表示当加载完成页面的时候就会回调onPageFinished这个方法,这个方法会判断你这个网页是否真的加载完毕,当前正在加载的网页如果你产生跳转的时候这个方法就会被调用无数次,当你的加载各种各样的网页的时候并且要完成一些操作的时候最好还是调用webChromeClient.onProgressChanged这个方法。

            5、后台耗电:当程序开启webview加载网页的时候webview会自己开启线程,如果没有很好将webview销毁的话残余的线程就会一直在后台运行,导致引用程序耗电量居高不下。可以采取在Activity的onDestory方法里面直接调用system.exit方法直接把虚拟机关闭。

            6、webview硬件加速导致页面渲染问题:容易出现页面加载带块同时界面闪烁的现象。解决办法是,设置webview暂时关闭硬件加速。

二、关于webview的内存泄漏问题

            1、独立进程就是开启一个单独的进程给webview操作、简单暴力、不过可能涉及到进程间的通信。

            2、动态添加webview,传入webview中使用的Context使用弱引用,动态添加webview意思是在布局中创建一个viewgroup用来放置webview,Activity创建add进来,在activity停止时remove掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值