WebView的总结

WebViewWebView的做用WebView经常使用方法WebView资源加载WebView漏洞html

WebView

各类技术都有各自的优缺点,因此结合各自的有点去作Hybrid混合应用会好一点。WevView是一个基于webkit殷勤、展示web页面的空间。Android在4.4开始直接使用了Chrome。web

WebView的做用

  • 显示和渲染web网页
  • 直接使用html文件(网络和本地assets)做布局
  • 和JavaScript交互调用

WebView经常使用方法

加载一个页面缓存

image-20200126021424064
image-20200126021424064

WebView的状态网络

image-20200126022714189
image-20200126022714189

WebView网页的上一个和下一个切换app

image-20200126025805246
image-20200126025805246

WebView清除缓存数据函数

image-20200126030431816
image-20200126030431816

WebSettings经常使用方法说明布局

image-20200126031634019
image-20200126031634019

WebView缓存设置url

WebView在加载html页面时,会在/data/data/packagepath目录下生成database与cahce两个文件夹,请求的URL记录保存在WebViewCache.db,而URL的内容保存在WebViewCache文件夹下spa

image-20200126041206748
image-20200126041206748

设置WebViewClient3d

image-20200126041531014
image-20200126041531014

设置WebViewChromeClient

image-20200126044054554
image-20200126044054554

Native和JavaScript相互调用

image-20200126044304758
image-20200126044304758

缓存机制

image-20200126043942893
image-20200126043942893

WebView资源加载

WebView资源预加载

能够在Android 的BaseApplication里初始化一个WebView对象(用于加载经常使用的H5页面资源),当需使用这些页面时再从BaseApplication里取过来直接使用

image-20200126044441639
image-20200126044441639

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
    image-20200126045934837
相关文章
相关标签/搜索