[Crash修复方案]WebView中BadTokenException

1.背景

贴吧Crash平台中,收到了大量由于WebView中由于Window Token失效问题导致的Crash.

2.Crash栈

3.BadTokenException类型

4.原因

在WebView中,可以通过JS与前端页面进行交互,在JS调用中,会有很多的情况下在Native页面进行弹窗提示,如JSAlert,JSPrompt,JSConfirm等等。如果当Activity正在销毁,或者当前窗口的Token失效时,会导致该Crash.

5.代码分析

a.WebView中调用setWebChromeClient,将WebChromeClient设置到mProvider中

b.mProvider是通过WebViewFactoryProvider中拿到WebViewFacotryProvider的实例

c.通过反射,创建出WebViewClassic$Factory的实例返回

d.在WebViewClassic的setWebChromeClient,调用CallbackProxy.setWebChromeClient

e.在CallbackProxy.handleMessage中,发现在mWebChromClient.onJSAlert等Hook函数中可以拦截弹窗事件

6.解决方案

在WebView中设置WebChromeClient,并且在onJSConfirm等等会弹出系统AlertDialog前进行判断,如果当前的Token失效,则不进行弹窗,返回true即可

判断Token失效需要判断:

1.当前Activity是否处于finish状态

2.Activity的Token处于Alive并且处于Active状态

时间: 2024-07-29 16:55:18

[Crash修复方案]WebView中BadTokenException的相关文章

水平权限漏洞的修复方案

水平权限漏洞一般出现在一个用户对象关联多个其他对象(订单.地址等).并且要实现对关联对象的CRUD的时候.开发容易习惯性的在生成CRUD表单(或AJAX请求)的时候根据认证过的用户身份来找出其有权限的被操作对象id,提供入口,然后让用户提交请求,并根据这个id来操作相关对象.在处理CRUD请求时,往往默认只有有权限的用户才能得到入口,进而才能操作相关对象,因此就不再校验权限了.可悲剧的是大多数对象的ID都被设置为自增整型,所以攻击者只要对相关id加1.减1.直至遍历,就可以操作其他用户所关联的对

Bash漏洞批量检测工具与修复方案

<img src="http://image.3001.net/images/20140928/14118931103311.jpg!small" title="shellshock-bug-bash-bashbug-938x535.jpg"/></strong></span>&a

OpenSSL漏洞转攻个人电脑 360首推修复方案

OpenSSL“心脏出血”漏洞危害辐射范围正在不断扩大.在思科.Juniper网络设备被曝受此漏洞影响后,Windows上大批软件也被发现存在漏洞,可被黑客利用攻击网民电脑,抓取密钥等隐私数据,而攻击代码已在国外技术网站GitHub上公开.对此360安全卫士于10日晚间紧急推出漏洞修复方案,是目前唯一可预防此漏洞的PC安全软件. “心脏出血”漏洞刚刚曝出时,黑客主要攻击的是电商等https网站,抓取网站用户的登陆账号和密码.cookie等数据;此后,大量VPN.邮件系统.FTP工具也被曝受漏洞影

Android热修复技术专题:来自微信、淘宝、支付宝、QQ空间的热修复方案

最近好多人都讨论关于热更新的话题,所以查询了一些资料看看 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App.测试.向各个应用市场和渠道换包.提示用户升级.用户下载.覆盖安装.有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发布. 这时候就提出一个问题:有没有办法以补丁的方式动态修复紧急Bug,不再需要重新发布App,不再需要用户重新下载,覆盖安装?答案当然是有的,那就是最近涌现出来得热补丁方案,主要包括淘宝的Dexpo

读取数据库数据填充到缓存的问题,及修复方案一则

业务简述: 为了提高站点性能,部署了一台Redis,把资源从SqlServer数据库中同步到Redis,站点由原来的读取数据库,变更为读取Redis,以利用Redis的高并发提升站点性能目的. 环境说明: 1.假设表名为softs, 记录的更新时间字段名为 updateTime: 2.不考虑数据库的DELETE操作,只考虑INSERT和UPDATE操作: 3.流程中所有时间,都以数据库时间为准,以避免不同服务器之间的时间误差,导致数据遗漏. 4.重要的前提条件:数据库执行INSERT和UPDAT

Struts2漏洞修复方案

近期Struts2被曝重要漏洞,此漏洞影响struts2.0-struts2.3所有版本,可直接导致服务器被远程控制从而引起数据泄漏,影响巨大,受影响站点以电商.银行.门户.政府居多. 官方描述:S2-016:https://cwiki.apache.org/confluence/display/WW/S2-016S2-017:https://cwiki.apache.org/confluence/display/WW/S2-017 官方建议修复方案:升级到最新版本 struts-2.3.15.

Linux Glibc库严重安全漏洞修复方案通知(腾讯开发者社区)

如何查看当前glibc的版本号? rpm -aq | grep glibc 尊敬的用户: 您好!2015年1月28日, 腾讯云安全情报监测到LinuxGlibc库存在一处严重安全漏洞,可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限,漏洞详细点击这里查看. [影响版本]: Glibc2.2 ~ Glibc 2.18 [修复方案]:       1.通过官方渠道自助下载更新,升级到Glibc 2.19及其以上版本.官方已在Glibc 2.19及以上版本

struts2架构网站漏洞修复详情与利用漏洞修复方案

struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被***者挖掘出来的struts2漏洞也越来越,从最一开始S2-001到现在的最新的s2-057漏洞,本文着重的给大家介绍一下struts2漏洞的利用详情以及漏洞修复办法. 先从1开始吧,S2-001影响的版本是Struts 2.0.0 - Struts 2.0.8版本,最早开始的版本漏洞太低级,当时的apache官方并没有设置安全机制,导致在提交参数

网站安全之逻辑漏洞检测 附网站漏洞修复方案

在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭泄露,包括手机号,姓名,地址都被泄露,后续带来的损失很大,最近几年用户信息泄露的事件时有发生,给很多企业,酒店都上了一堂生动的安全课.关于网站逻辑漏洞的总结,今天跟大家详细讲解一下.网站逻辑漏洞 用户的隐私信息属于数据的保护的最高级别,也是最重要的一部分数据,在逻辑漏洞当中属于敏感信息泄露,有些敏感信息还包括了系统的重要信息,比如服务器的