WebViewWebView的作用WebView常用方法WebView资源加载WebView漏洞
WebView
各种技术都有各自的优缺点,所以结合各自的有点去做Hybrid混合应用会好一点。WevView是一个基于webkit殷勤、展现web页面的空间。Android在4.4开始直接使用了Chrome。
WebView的作用
- 显示和渲染web网页
- 直接使用html文件(网络和本地assets)作布局
- 和JavaScript交互调用
WebView常用方法
加载一个页面
WebView的状态
WebView网页的上一个和下一个切换
WebView清除缓存数据
WebSettings常用方法说明
WebView缓存设置
WebView在加载html页面时,会在/data/data/packagepath目录下生成database与cahce两个文件夹,请求的URL记录保存在WebViewCache.db,而URL的内容保存在WebViewCache文件夹下
设置WebViewClient
设置WebViewChromeClient
Native和JavaScript相互调用
缓存机制
WebView资源加载
WebView资源预加载
可以在Android 的BaseApplication里初始化一个WebView对象(用于加载常用的H5页面资源),当需使用这些页面时再从BaseApplication里取过来直接使用
WebView漏洞
WebView的漏洞
WebView的主要漏洞有三类:任意代码执行漏洞、密码明文存储漏洞、域控制不严格漏洞
任意代码漏洞
addJavascriptInterface接口 4.2开始不用考虑这个问题 4.2开始规定了对被调用的函数要以@JavascriptInterface进行注解避免漏洞攻击
内置导出的searchBoxJavaBridge_对象
内置导出的accessibility和accessibilityTraversalObject对象
WebView默认开启密码保存功能 当用户输入密码会弹出提示框询问用户是否保存密码,密码明文保存在/data/data/pcakgename/database/webview.db中,有盗取风险
解决方案 调用WebSettings#setSavePassword(false)关闭密码保存
域控制不严格漏洞
A 应用可以通过 B 应用导出的 Activity 让 B 应用加载一个恶意的 file 协议的 url,从而可以获取 B 应用的内部私有文件,从而带来数据泄露威胁
image-20200126045934837