Chrome 83 發佈,支持直接讀寫本地文件!新的跨域策略!

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月中旬發佈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章