Chrome 56 淘汰和移除 API

Joe Medley
Joe Medley

在幾乎所有版本的 Chrome 中,我們都看到產品、效能和網路平台功能的更新和改善幅度相當顯著。本文將說明 Chrome 56 中淘汰和移除的項目,該版本目前處於 Beta 版階段,截至 12 月 8 日。這份清單內容隨時可能有所變動。

移除對 SHA-1 憑證的支援

SHA-1 加密雜湊演算法最早在 11 年前出現弱點徵兆,而近期研究指出,可能會出現直接影響網際網路公開金鑰基礎架構 (PKI) 完整性的攻擊。

為保護使用者免於遭受這類攻擊,Chrome 56 以上版本 (穩定版於 2017 年 1 月推出) 已不再支援 SHA-1 憑證。使用這類憑證造訪網站時,會顯示插頁式警告。如需進一步瞭解,請參閱 Chrome 安全性網誌

Intent to Remove | Chromestatus 追蹤工具 | Chromium 錯誤

在 TLS 中移除 CBC 模式 ECDSA 加密套件

TLS 的 CBC 模式結構有瑕疵,因此作業不穩定且難以安全實作。雖然 CBC 模式的加密編譯器仍廣泛用於 RSA,但在 ECDSA 中幾乎不存在。其他瀏覽器仍支援這些密碼,因此我們認為風險不高。此外,只有少數機構會使用 TLS 中的 ECDSA,而且通常會採用更複雜的設定 (部分較舊的用戶端只支援 RSA),因此我們希望 ECDSA 網站能獲得更好的維護,並在發生問題時更能即時回應。

TLS 1.2 新增了以 AEAD 為基礎的新密碼,可避免這些問題,特別是 AES_128_GCM、AES_256_GCM 或 CHACHA20_POLY1305。雖然我們目前只要求以 ECDSA 為基礎的網站執行這項操作,但建議所有管理員都這麼做。以 AEAD 為基礎的編碼器不僅可提升安全性,還能提升效能。AES-GCM 提供近期 CPU 的硬體支援,ChaCha20-Poly1305 可允許快速實作軟體。另一方面,CBC 加密法需要在每個傳出記錄上進行緩慢的複雜緩解措施和 PRNG 存取作業。以 AEAD 為基礎的加密方式也是 HTTP/2 和 False Start 最佳化的先決條件。

Intent to Remove | Chromestatus 追蹤工具 | Chromium 錯誤

從觸控捲動中移除使用者手勢

我們發現多個範例,其中有寫得不好的廣告或惡意廣告,會在 touchstart 或所有 touchend 事件上觸發觸控捲動導覽功能。如果「wheel」事件無法開啟彈出式視窗,則觸控捲動也無法開啟彈出式視窗。這可能會導致部分情況失敗,例如無法在觸控時播放媒體,或無法在輕觸時開啟彈出式視窗。在所有這些情況下,Safari 都會在背景中失敗,無法開啟彈出式視窗。

意圖移除意圖 | Chrome 狀態追蹤工具 | Chromium 錯誤

不允許擷取所有類型/語言屬性無效的指令碼

目前,Chrome 的預先載入掃描器會擷取 <scripts> 元素中的項目,不論 typelanguage 屬性的值為何,但在剖析時不會執行指令碼。淘汰擷取功能後,預先載入掃描器和剖析器就會具有相同的語意,我們也不會針對不會使用的指令碼啟動擷取作業。這項功能旨在為前往含有大量後續處理自訂指令碼標記 (例如 type="text/template") 的網站的使用者儲存資料。

sendBeacon API 充分涵蓋使用無效指令碼對伺服器進行連線偵測 (ping) 的用途。

這項變更會讓 Chrome 與 Safari 保持一致,但 Firefox 仍會要求指令碼,不論類型或語言為何。

Intent to Remove | Chromestatus 追蹤工具 | Chromium 錯誤

移除 MediaStreamTrack.getSources()

這個方法已不再是規格,也未獲得任何其他主要瀏覽器的支援。已由 MediaDevices.enumerateDevices() 取代,Blink 自 47 版起便支援此標記,且其他瀏覽器也支援此標記。範例如下所示。這個假設的 getCameras() 函式會先使用功能偵測功能來尋找並使用 enumerateDevices()。如果功能偵測失敗,系統會在 MediaStreamTrack 中尋找 getSources()。最後,如果沒有任何 API 支援,則會傳回空白 cameras 陣列。

    function getCameras(camerasCallback) {
      var cameras = [];
      if('enumerateDevices' in navigator.mediaDevices) {
         navigator.mediaDevices.enumerateDevices()
          .then(function(sources) {
            return sources.filter(function(source) { 
              return source.kind == 'videoinput' 
            });
          })
          .then(function(sources) {
            sources.forEach(function(source) {
              if(source.label.indexOf('facing back') >= 0) {
                // move front facing to the front.
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            });
            camerasCallback(cameras);
          });
      }
      else if('getSources' in MediaStreamTrack) {
        MediaStreamTrack.getSources(function(sources) {

          for(var i = 0; i < sources.length; i++) {
            var source = sources[i];
            if(source.kind === 'video') {

              if(source.facing === 'environment') {
                // cameras facing the environment are pushed to the front of the page
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            }
          }
          camerasCallback(cameras);
        });
      }
      else {
        // We can't pick the correct camera because the API doesn't support it.
        camerasCallback(cameras);
      }
    };

意圖移除意圖 | Chrome 狀態追蹤工具 | Chromium 錯誤

移除 reflected-xss CSP 指令

內容安全性政策第 2 級規格早期草稿包含 reflected-xss 指示,除了語法不同,與 X-XSS-Protection 標頭提供的內容相同。這項指示已在 2015 年從規格中移除,但在 Chrome 中實作之前,我們現在正在移除對這項指令的支援。

意圖移除意圖 | Chrome 狀態追蹤工具 | Chromium 錯誤

取代 CSP 的「referrer」指令

CSP referrer 指示可讓網站擁有者透過 HTTP 標頭設定參照網址政策。這項功能不僅使用率極低,也已不再是任何 W3C 規格的一部分。

如果網站仍需要這項功能,則應使用 <meta name="referrer"> 或新的 Referrer-Policy 標頭

Intent to Remove | Chromestatus 追蹤工具 | Chromium 錯誤

移除 PaymentAddress.careOf 欄位

PaymentAddress 介面具有非標準 careOf 欄位 (不支援已知的位址標準)。careOf 欄位也是不必要的,收件者和機構欄位已足以支援所有必要用途。新增 careOf 會對現有郵遞地址結構定義和 API 的互通性造成重大問題。如需進一步討論,請參閱 GitHub 上的規格移除提案

Intent to Remove | Chromium Bug

移除 SVGViewElement.viewTarget

SVGViewElement.viewTarget 屬性並非 SVG2.0 規格的一部分,而且使用率很低或不存在。這項屬性已在 Chrome 54 版中淘汰,目前已移除。

Intent to Remove | Chromestatus 追蹤工具 | Chromium 錯誤