开启 Android WebView 的安全浏览模式
Hybrid App(混合式开发)已经是每一个商业应用都会使用的开发手段。其最大的优势就是将一些可动态更新的内容页面使用 H5 开发,然后借用移动端原生系统提供的 WebView 控件加载进来。这种方式不仅能够节约安卓和 iOS 两个客户端的开发人力成本,还能在避免应用版本迭代的情况下动态更新页面内容。然而,WebView 有一个弊端,就是始终无法避免的安全问题。
比如,你连接的 WI-FI 可能会被一些网络运营商恶意拦截 DNS 系统,当你打开应用的 WebView 时,会在页面底部或者其他地方看到莫名其妙的广告内容。更有甚者,直接重定向到其他网页,对应用或者设备随意操作,存在很大的安全隐患。
Google 一直也在致力于处理这个问题。最近,就有了一些进展。根据 Android Developers 官方博客介绍,从 Android O 开始,WebView 将采用独立于托管应用之外的进程来进行渲染器,提供隔离空间。
这种做法与 Chrome 浏览器类似,使得 WebView 拥有两级隔离:
WebView 渲染引擎剥离出独立进程。这样,也就不会存在由于 WebView 的加载错误导致我们的主应用发生崩溃问题,而且第三方恶意网站也很难通过渲染器攻击托管应用。
在隔离的进程沙盒中运行的渲染器进程,被限制使用设备资源。比如,渲染器不能自行向磁盘写入数据,或者进行网络通信等。这种隔离能够进一步防御恶意攻击。
安全浏览模式下的最新版 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。
相关拓展内容:
关于 WebView 与 Java 代码的交互操作,可参考我之前总结的文章 —— Android WebView —— Java 与 JavaScript 交互总结
有关 WebView 使用的更多细节,可访问链接 —— Managing WebViews
关于我:亦枫,博客地址:http://yifeng.studio/,新浪微博:IT亦枫
微信扫描二维码,欢迎关注我的个人公众号:安卓笔记侠
不仅分享我的原创技术文章,还有程序员的职场遐想
开启 Android WebView 的安全浏览模式的更多相关文章
- 强制开启android webview debug模式使用Chrome inspect
强制开启android webview debug模式使用Chrome inspect https://blog.csdn.net/zhulin2609/article/details/5143782 ...
- Android WebView 缓存机制和模式详解
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...
- 懒人模式开启Android模块自动化Api之旅
推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 在将业务进行模块化时,避免不了模块页面路由和模块通信, 大多数我 ...
- Android WebView 开发教程
声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...
- Android WebView 开发详解(三)
转载请注明出处 http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...
- Android WebView 详解
相关API 相关类介绍 WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向 WebResou ...
- Android WebView 开发具体解释(三)
转载请注明出处 http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...
- 最全面的Android Webview详解
转自:最全面的Android Webview详解 前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝.京东.聚划算等等,如下图 那么这种该如何实现呢?其实这是 ...
- Android WebView 调试方法
调试Android WebView中的h5页面,通常就是通过alert和抓包工具来定位问题,效率低且无法直接调试样式或打断点,可谓是事倍功半.本文介绍一下我在项目中使用的新方法,能够通过chrome的 ...
随机推荐
- 20145307第五次JAVA学习实验报告
20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名 ...
- 机器学习之线性回归(纯python实现)][转]
本文转载自:https://juejin.im/post/5a924df16fb9a0634514d6e1 机器学习之线性回归(纯python实现) 线性回归是机器学习中最基本的一个算法,大部分算法都 ...
- 爬虫之动态HTML处理(Selenium与PhantomJS )
Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...
- webservice声明发布SOAP1.2
在不声明1.2的情况下,默认是1.1 当声明1.2时
- Mac Homebrew安装php56 到phpstorm过程问题汇总
Mac自带版本是php5.5,本来是用homebrew安装xdebug 命令:brew install php55-xdebug 但是安装之后使用phpstorm还是有问题.php -v 并没有显示有 ...
- DBUS及常用接口介绍
[原文] 1. 概述 1.1 DBUS概述 DBUS是一种高级的进程间通信机制.DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息 ...
- eclipse 打开 maven项目,出现红色的感叹号
解决: 选中有感叹号的项目右键,用maven>>update project解决.[然后我再添加java system 类库就可以了]
- python 使用set对list去重,并保持list原来顺序
list_one=re.findall(r"^\s{0}[A-Za-z]*\b", txt,re.M) #匹配一级目录 addr_to = list(set(list_one))a ...
- 转 : JBoss Web和 Tomcat的区别
JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全 球领导者,JBoss在 ...
- MySQL 存储过程参数用法 in, out, inout
MySQL 存储过程参数有三种类型:in.out.inout.它们各有什么作用和特点呢? 一.MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似 ...
