开启 Android WebView 的安全浏览模式
来源:互联网 发布:怎样限制手机安装软件 编辑:程序博客网 时间:2024/05/16 14:09
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 安全浏览。而你只需要在清单文件中添加如上配置代码,便可以让你的混合式开发的应用更加安全。
文章备注:本文中部分内容翻译自安卓开发者官方博客,参考链接(需要翻墙):What’s new in WebView security。
相关拓展内容:
关于 WebView 与 Java 代码的交互操作,可参考我之前总结的文章 —— Android WebView —— Java 与 JavaScript 交互总结
有关 WebView 使用的更多细节,可访问链接 —— Managing WebViews
关于我:亦枫,博客地址:http://yifeng.studio/,新浪微博:IT亦枫
微信扫描二维码,欢迎关注我的个人公众号:安卓笔记侠
不仅分享我的原创技术文章,还有程序员的职场遐想
- 开启 Android WebView 的安全浏览模式
- WebView启动安全浏览
- WebView安全浏览
- Android WebView图片浏览
- android: 如何开启webview的LBS功能
- android:如何开启webview的LBS功能
- 强制开启android webview debug模式使用Chrome inspect
- 强制开启android webview debug模式使用Chrome inspect
- Android使用WebView浏览网页
- Android--在程序里浏览网页/Webview的使用
- Android WebView安全讨论
- android webview addJavascriptInterface 安全
- android-webView 定位功能开启
- 开启jetty服务器中的websocket的安全模式
- Android WebView 关闭无痕浏览
- 解决webBrowser 访问出现"为了保护您的安全" 的警告 和 开启IIS目录浏览功能
- android WebView的缓存模式、JS交互
- Android webView 打开新窗口的模式
- win10 svn图标不显示
- 使用共享内存实现进程间通信 -使用信号实现同步
- MYSQL数据库设计规范
- Centos updatedb命令不好使
- 【多线程】——java多线程编程核心读书总结
- 开启 Android WebView 的安全浏览模式
- python之路——编码与解码
- C语言:从文件中读入数据
- YUV
- JDK动态代理
- UART、I2C、SPI通信协议
- ssmspring+ springmvc + hibernate的 列表展示数据
- Idea中Maven的运用,创建一个web项目,servlet演示
- ActionMailer发送邮件最简单实例,163邮箱