自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WebView:Google,我已經(jīng)長(zhǎng)大了,知道自己區(qū)分安全?。?/h1>

安全 應(yīng)用安全
如果你在用 Android 原生系統(tǒng)(Google Play 服務(wù)),在使用 WebView 加載某些網(wǎng)頁(yè)時(shí),一定遇到過(guò)以下的安全警告紅屏。

[[258891]]

 一、前言

如果你在用 Android 原生系統(tǒng)(Google Play 服務(wù)),在使用 WebView 加載某些網(wǎng)頁(yè)時(shí),一定遇到過(guò)以下的安全警告紅屏。

 

這是 WebView 的安全瀏覽保護(hù)策略,在 Android 8.0(API Level 26)開(kāi)始的默認(rèn)策略,被應(yīng)用在所有 App 的 WebView 當(dāng)中。

Google 會(huì)自己維護(hù)一套“不安全”網(wǎng)站的列表,并通過(guò) Google Play 服務(wù),同步到所有的設(shè)備上。當(dāng)你要訪問(wèn)某些被標(biāo)記為“不安全”的網(wǎng)站時(shí),它就會(huì)以此“紅屏”警告用戶(hù)。

注意這是默認(rèn)策略,雖然出發(fā)點(diǎn)是為了保護(hù)用戶(hù),但是有時(shí)候我們自己的 App 還是要有自主管控的權(quán)利。

那我們有辦法在自己的 App 內(nèi),關(guān)閉此項(xiàng)保護(hù)嗎?畢竟我的應(yīng)用我做主,安不安全自己來(lái)管控。

今天就來(lái)聊聊,如何在 Android 8.0(API Level 26)中,關(guān)閉此安全保護(hù)策略。

二、什么是WebView的安全策略

自 2018 年 4 月起,隨著 WebView 66 發(fā)布,Google Play 保護(hù)機(jī)制,將在 WebView 中默認(rèn)開(kāi)始此安全瀏覽策略。

而 Android 開(kāi)發(fā)者在使用 WebView 時(shí),無(wú)需再進(jìn)行任何更改,即可享受此項(xiàng)保護(hù)服務(wù)。自 Android 8.0 開(kāi)始,WebView 中即已經(jīng)集成安全瀏覽功能,并且與 Android 版的 Chrome 采用相同的底層技術(shù)。

一旦觸發(fā) WebView 的安全機(jī)制,就會(huì)出現(xiàn)類(lèi)似下圖這樣的“紅屏”警告。

 

Google 會(huì)自維護(hù)一套不良網(wǎng)站的列表,以確保用戶(hù)可以在瀏覽之前,發(fā)出警告。為了同步這部分列表,Google 花費(fèi)了很大的努力,就是為了保護(hù)用戶(hù)的安全。

三、如何控制安全策略

在 Android 8.0 及以上的設(shè)備中,WebView 的安全瀏覽策略,是默認(rèn)生效的。

也就是說(shuō),如果我們想要使用它,我們什么額外的工作都不需要做,但是我們?nèi)绻幌氩捎盟?,就需要通過(guò)一個(gè)方法將其關(guān)閉。

3.1 如何監(jiān)控開(kāi)啟

WebView 的安全瀏覽,是依賴(lài)于 Google Play 和 Chrome 更新的,也就是說(shuō),雖然你的設(shè)備是 Android 8.0,但是此策略也是有可能沒(méi)有生效的。

那么如何確定此功能是否生效呢?

WebView 提供了一個(gè)方法 startSafeBrowsing() 方法,來(lái)主動(dòng)開(kāi)啟安全瀏覽策略,在回調(diào)中,我們可以知道當(dāng)前設(shè)備是否準(zhǔn)備好了,符合開(kāi)啟安全瀏覽的條件。

WebView.startSafeBrowsing(this, object : ValueCallback { override fun onReceiveValue(value: Boolean?) { val isOpen = value ?:false if (isOpen) { Log.i("cxmy_dev", "Safe browsing. On") } else { Log.i("cxmy_dev", "Safe browsing. Off") } }})

注意回調(diào)內(nèi)的 value 可能為 null。

3.2 如何關(guān)閉安全策略

WebView 的安全策略是默認(rèn)開(kāi)始的,如果想要關(guān)閉它,需要通過(guò) WebSettings 這個(gè)類(lèi),其中有 setSafeBrowsingEnabled(boolean) 方法,可以用于設(shè)置是否開(kāi)啟安全模式。

webSettings.safeBrowsingEnabled = false

此方法是一種全局的策略,也就是要么開(kāi)啟、要么關(guān)閉。

3.3 配置白名單

使用 setSafeBrowsingEnable() 方法,只能做二態(tài)的設(shè)置,要么開(kāi)啟要么關(guān)閉。如果我們想設(shè)置,只允許某些 Host 不經(jīng)過(guò)安全策略校驗(yàn),如何設(shè)置呢?

WebView 還提供了一個(gè) setSafeBrowsingWhiteList() 的方法,用于設(shè)置一個(gè)安全策略的白名單。

var array = ArrayList()array.add("example.com")WebView.setSafeBrowsingWhitelist(array, object : ValueCallback { override fun onReceiveValue(value: Boolean?) { }})

setSafeBrowsingWhiteList() 方法很靈活,可以通過(guò)配置指定域名及其子域名,或者僅此域名不包含其子域名。還可以直接配置 IP 地址,支持 IPV4 和 IPV6。

 

四、小結(jié)時(shí)刻

今天我們聊到如何關(guān)閉 WebView 的安全瀏覽策略,本文涉及的 API,全部?jī)H支持 API Level 27,使用的時(shí)候注意判斷。

當(dāng)然,WebView 的安全瀏覽是有必要的,所以如果你的域名被 Google 誤認(rèn)為是危險(xiǎn)鏈接,可以通過(guò)申述的方式解封。申述地址(https://support.google.com/chrome/answer/99020)。

references:https://security.googleblog.com/2015/12/protecting-hundreds-of-millions-more.html

https://developer.android.com/reference/android/webkit/WebView.html

https://www.google.com/chrome/privacy/whitepaper.html

【本文為51CTO專(zhuān)欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2012-05-08 16:07:38

Android

2010-03-25 16:08:19

2012-07-25 09:56:52

編程程序員

2016-09-07 12:44:43

2009-09-03 17:54:01

Google Wave

2013-01-24 11:15:58

IE10瀏覽器

2020-05-25 08:45:08

面試Google簡(jiǎn)歷

2021-05-10 07:30:33

Google技術(shù)谷歌

2022-02-21 12:29:01

for循環(huán)前端

2011-08-31 08:41:07

Java高斯林

2015-08-11 09:51:06

谷歌重組Alphabet

2021-04-12 15:26:35

PythonPycharm快捷鍵

2021-12-31 18:24:45

ThreadLocal數(shù)據(jù)庫(kù)對(duì)象

2023-01-02 10:08:42

StampedLocAQS框架

2018-05-03 06:56:43

項(xiàng)目經(jīng)理代碼項(xiàng)目管理

2015-11-16 09:04:19

寫(xiě)代碼程序員年齡

2015-11-17 09:47:32

代碼寫(xiě)下去

2018-05-10 08:55:51

2023-06-06 07:41:00

Reacthook

2011-05-24 09:05:15

Java誕生
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)