Hybrid App(混合式开发)已经是每一个商业应用都会使用的开发手段。其最大的优势就是将一些可动态更新的内容页面使用 H5 开发,然后借用移动端原生系统提供的 WebView 控件加载进来。这种方式不仅能够节约安卓和 iOS 两个客户端的开发人力成本,还能在避免应用版本迭代的情况下动态更新页面内容。然而,WebView 有一个弊端,就是始终无法避免的安全问题。

比如,你连接的 WI-FI 可能会被一些网络运营商恶意拦截 DNS 系统,当你打开应用的 WebView 时,会在页面底部或者其他地方看到莫名其妙的广告内容。更有甚者,直接重定向到其他网页,对应用或者设备随意操作,存在很大的安全隐患。

Google 一直也在致力于处理这个问题。最近,就有了一些进展。根据 Android Developers 官方博客介绍,从 Android O 开始,WebView 将采用独立于托管应用之外的进程来进行渲染器,提供隔离空间。

这种做法与 Chrome 浏览器类似,使得 WebView 拥有两级隔离:

  1. WebView 渲染引擎剥离出独立进程。这样,也就不会存在由于 WebView 的加载错误导致我们的主应用发生崩溃问题,而且第三方恶意网站也很难通过渲染器攻击托管应用。

  2. 在隔离的进程沙盒中运行的渲染器进程,被限制使用设备资源。比如,渲染器不能自行向磁盘写入数据,或者进行网络通信等。这种隔离能够进一步防御恶意攻击。

安全浏览模式下的最新版 WebView 还集成了 Google 安全浏览机制,来保护和提醒用户可能存在风险的网站。启用安全浏览配置后,WebView 将参考安全浏览的恶意软件和钓鱼网站数据库检查访问的 URLs 地址,在用户打开之前给予危险提示,如:

讲到这里,你可能就要问了,如何启动 WebView 安全浏览呢?很简单,在我们应用的 Manifest 清单文件中按照下面的代码简单配置一下,便可以让当前 App 中使用到的所有 WebView 都能支持安全浏览:

<manifest>
    <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
               android:value="true" />
    ...
    <application> ... </application>
</manifest>

由于 WebView 作为一个独立的 APK 被分发使用的,截至目前,Android 5.0 及以上系统的设备已经可以支持 WebView 安全浏览。而你只需要在清单文件中添加如上配置代码,便可以让你的混合式开发的应用更加安全。

文章备注:本文中部分内容翻译自安卓开发者官方博客,参考链接(需要FQ):What’s new in WebView security

相关拓展内容:

关于我:亦枫,博客地址:http://yifeng.studio/,新浪微博:IT亦枫

微信扫描二维码,欢迎关注我的个人公众号:安卓笔记侠

不仅分享我的原创技术文章,还有程序员的职场遐想

开启 Android WebView 的安全浏览模式的更多相关文章

  1. 强制开启android webview debug模式使用Chrome inspect

    强制开启android webview debug模式使用Chrome inspect https://blog.csdn.net/zhulin2609/article/details/5143782 ...

  2. Android WebView 缓存机制和模式详解

    当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...

  3. 懒人模式开启Android模块自动化Api之旅

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 在将业务进行模块化时,避免不了模块页面路由和模块通信, 大多数我 ...

  4. Android WebView 开发教程

    声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...

  5. Android WebView 开发详解(三)

    转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...

  6. Android WebView 详解

    相关API 相关类介绍 WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向 WebResou ...

  7. Android WebView 开发具体解释(三)

    转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...

  8. 最全面的Android Webview详解

    转自:最全面的Android Webview详解 前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝.京东.聚划算等等,如下图  那么这种该如何实现呢?其实这是 ...

  9. Android WebView 调试方法

    调试Android WebView中的h5页面,通常就是通过alert和抓包工具来定位问题,效率低且无法直接调试样式或打断点,可谓是事倍功半.本文介绍一下我在项目中使用的新方法,能够通过chrome的 ...

随机推荐

  1. 关于JavaScript对象,你所不知道的事(一)- 先谈对象

    这篇博文的主要目的是为了填坑,很久之前我发表了一篇名为关于JavaScript对象中的一切(一) - 对象属性的文章,想要谈一谈JavaScript对象,可那时只是贴了一张关于这个主题的思维导图,今天 ...

  2. zabbix_server.log大量提示cannot send list of active checks to "IP": host [HostName] not found

    zabbix server 日志大量提示上图信息 原因是 zabbix_agent.conf配置文件中配置的HostName与zabbix的web界面配置的不同导致的 zabbix_agent.con ...

  3. CentOS7系统安装及环境初始化

    操作系统安装:    将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则.所以需要在安装的时候,增加内核参数.1. 光标选择“Install CentOS 7” 2. 点击Tab,打开 ...

  4. springBoot的文件上传功能

    知识点: 后台:将上传的图片写入指定服务器路径,保存起来,返回上传后的图片路径(在springBoot中,参考博客:http://blog.csdn.net/change_on/article/det ...

  5. shell统计各省的百强县

    原始数据在最后 baiqiang.txt文件中 shell命令: cat baiqiang.txt | grep -P "^国|^☆" | awk -F" " ...

  6. ExtJs4.2.1中的Ext.grid.GridPanel选择行回车事件

    网上大多说的是“rowdblclick” 其实是“itemdblclick” 这个东西坑了我一上午.

  7. jQuery全局冲突案例,解决$.noConflict()

    如图:犹豫$在js中可以作为一个变量去定义,所以在引入jQuery包之前定义了$对象,那么,在引入jQuery包之后就不能使用$对象了 解决:使用$.noConflict()她可以返回一个对象,这个对 ...

  8. MySQL表锁和行锁

    锁粒度 MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的锁实现: InnoDB 存储引擎既支持行级锁(row-level locki ...

  9. jquery tmpl模板

    之前用模板渲染都是用angular,无意间发现了jquery tmpl这种轻量级,其文档在这里 官方解释对该插件的说明:将匹配的第一个元素作为模板,render指定的数据,签名如下: .tmpl([d ...

  10. PHP函数前面添加@的作用

    @是PHP提供的错误信息屏蔽的专用符号. 比如在一个函数前使用@ @mysql_query 不会出现Warning, 而原来mysql_query 在遇到错误时会在页面上访提示Warning. @是可 ...