Chrome
穩定版本的更新直接跳過 v82
來到 Chrome 83
,因此很多原本在 Chrome 82
上就要正式發佈的功能也悉數積攢到了本次更新的 Chrome 83
中。
速覽
本地文件系統
新的內存監控 API
新的跨域策略
原生表單控件優化
混合內容下載提醒
新增可信類型
Cookie
隱私改進默認啓動 DoH
本地文件系統
Chrome 83
支持了一項新的本機文件系統 API,這使得開發者可以和本地文件做交互,例如IDE,照片和視頻編輯器,文本編輯器等。用戶授予 Web
應用程序訪問權限後,此API
允許 Web
應用程序直接讀取或保存對用戶設備上的文件和文件夾所做的更改。除了讀寫文件外,本機文件系統 API
還提供了打開目錄並枚舉其內容的功能。
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
新的內存監控 API
performance.measureMemory()
是一個新的 API,可用於測量頁面的內存使用情況並檢測內存泄漏。
舊版 API performance.memory
,返回的是 JavaScript
堆的大小,而新 API
估計的是整個 web
頁面的內存使用量。當 Chrome
與多個 web
頁面(或同一個 web
頁面的多個實例)共享同一堆時,這種差異變得非常重要。在這種情況下,舊 API
的結果可能會被任意關閉。
另一個區別是,新的 API
是在垃圾收集期間執行內存測量。這減少了結果中的噪音,但是可能需要一段時間才能產生結果,所以這個操作是異步的。
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
新的跨域策略
一些 Web API
會增加諸如 Spectre
之類的旁路攻擊的風險。
什麼叫旁路攻擊呢?就是說,在你的程序正常通訊通道之外,產生了一種邊緣特徵,這些特徵反映了你不想產生的信息,這個信息被人拿到了,你就泄密了。這個邊緣特徵產生的信息通道,就叫旁路。比如你的內存在運算的時候,產生了一個電波,這個電波反映了內存中的內容的,有人用特定的手段收集到這個電波,這就產生了一個旁路了。
比如使用下面幾個 API 都可以造成這種風險:
SharedArrayBuffer
performance.measureMemory()
JS Self-Profiling API
爲了減輕這種風險,Chrome
提供了一個基於選擇加入的隔離環境,稱爲跨域隔離。這是通過兩個新的 HTTP Header
完成的:Cross-Origin-Embedder-Policy
和 Cross-Origin-Opener-Policy
,要選擇跨域隔離狀態,您需要在頁面添加下面的配置:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
跨域隔離狀態還可以防止對 document.domain
進行修改。
原生表單控件優化
微軟在新版的 Microsoft Edge
中表單控件外觀現代化給我留下了深刻的印象。除了更好的視覺風格之外,它們還提供了更好的觸摸支持和更好的輔助功能,包括改進的鍵盤支持!
現在這些表單改進也可以直接在 Chrome 83
穩定版使用,你會發現一些常見的網頁控件,包括勾選框、文本框、下拉選單、滑動工具條等等都已經從原先帶有高光、漸變和陰影的「復古」樣式演進爲扁平、清爽的現代風格。
混合內容下載提醒
在禁止了所有類型的混合內容資源的瀏覽之後,Chrome 83
對於混合內容下載時會給出「文件無法安全下載」的提醒。需要說明的是如果開啓了增強的安全瀏覽會要求將瀏覽數據發送到 Google
。
可信類型
Chrome
在 83
版本新增一個可信類型(Trusted types
),其號稱這一特性可以全面消除 DOM XSS
之前在 Chrome 83 beta
版的更新中詳細介紹了這一特性,感興趣的可以點擊:聊一下 Chrome 新增的可信類型(Trusted types)
Cookie 隱私改進
Chrome 83
重新設計了安全和隱私設置,在隱身模式下默認阻止了第三方 Cookie
。
並且 Chrome 83
也對 Cookie
管理提供了更多的選項:允許所有、隱身模式下阻止第三方 Cookie
、阻止第三方 Cookie
以及阻止所有。對應的在隱身模式下也有切換面板可供選擇。你可以通過單擊地址欄中的“眼睛”圖標來允許特定站點使用第三方Cookie
。
另一方面在 Chrome 80
中開始推進的安全檢查功能在本次更新中進一步加強,這一次除了會提醒密碼是否泄露之外,還會檢查擴展是否存在安全問題,擴展部分菜單也進行了單獨設計。可以詳細地羅列出擴展訪問了哪些數據。
默認啓動 DoH
當你嘗試打開一個網站時,您的瀏覽器首先需要通過 DNS
(域名系統)查找來確定託管該網站的服務器。DNS
服務器與你之間的鏈接爲“明文傳輸”,而非“加密傳輸”。這就導致每一個環節上的人都能隨意修改你的鏈接。
DNS-over-HTTPS
(簡稱DoH)的具體原理其實就是在DNS外面套一層HTTPS。使用之後你的站點的 DNS 查詢就變成了下面的過程:
你的電腦 -> DoH服務器 -> DNS服務器 -> DoH服務器 -> 你的電腦
以上流程中的一個箭頭代表一個HTTPS加密鏈接,使得該過程中的所有流量皆受到強加密。
從 Chrome 79
開始就開始加入了 DNS-over-HTTPS
,但 Google
並未自動將其切換,你可以。
現在,只要你的 DNS
服務器支持安全 DNS
, Chrome
中就會默認啓用 HTTP-over-HTTPS
。
禁用 Flash 進一步提示
而另一項一直執行的計劃——逐步結束對 Flash
支持在 Chrome 83
中進一步給予用戶提示,比如如果提示激活 Flash
插件時並導致狀態更改,將會再次給予警告。
Chrome
計劃在 2020
年 12
月之後完全禁用 Flash
播放器。
預告
後續會對本次新增內容的每一項進行詳細解讀。
Chrome 84
將於7月中旬發佈。