Chrome 58 的淘汰與移除功能

喬梅利
Joe Medley

在絕大多數的 Chrome 版本中,我們都發現大量的更新和改善項目,包含產品、效能和網路平台的功能。本文說明 Chrome 58 的淘汰及移除功能 (於 3 月 16 日推出 Beta 版)。這份清單隨時可能有所變動。

Android 上的滑鼠停止觸發 TouchEvents

在 Chrome 57 版之前,Chrome 中的 Android 低層級滑鼠事件主要遵循專為觸控互動設計的事件路徑。例如,按下滑鼠按鈕時發生滑鼠拖曳動作,會產生透過 View.onTouchEvent 傳遞的 MotionEvents

不過,由於觸控事件不支援懸停事件,因此滑鼠遊標懸停在獨立路徑上。設計具有許多副作用,包括滑鼠互動觸發 TouchEvents、所有滑鼠按鈕顯示為左側滑鼠按鈕,以及由 TouchEvents 抑制 MouseEvents

從 Chrome 58 以上版本開始,Android M 以上版本的滑鼠會在以下位置執行:

  • 已解除 TouchEvents
  • 使用適當的按鈕和其他屬性觸發一致的 MouseEvents 序列。

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

移除 usemap 屬性時不區分大小寫的比對

usemap 屬性先前定義為無大小寫。遺憾的是,這項實作方法十分複雜,因此所有瀏覽器都無法正確實作這項功能。研究指出,這種複雜的演算法不需要使用,甚至不需要使用 ASCII 不區分大小寫的比對。

因此,我們更新了規格,以便套用區分大小寫的比對。舊行為已在 Chrome 57 版中淘汰,現已移除。

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

移除從內容啟動的頂端頁框瀏覽資料網址

由於非技術性瀏覽器使用者不熟悉,因此我們越來越常看到用於假冒和網路釣魚攻擊的 data: 配置。為了避免這種情況,我們已禁止網頁在頂層頁框載入 data: 網址。這適用於 <a> 標記、window.openwindow.location 和類似機制。data: 配置仍適用於網頁下方載入的資源。

這項功能將在 Chrome 60 版中移除。

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

移除動態路徑屬性的已淘汰名稱

動態路徑 CSS 屬性可讓作者沿著作者指定的路徑將所有圖形物件製作成動畫。為符合規格要求,我們在 Chrome 45 中實作多項屬性。這些屬性的名稱已在 2016 年中變更。Chrome 已實作在 Chrome 55 和 Chrome 56 中的新名稱。另外,我們也導入了控制台淘汰警告訊息。

在 Chrome 58 版中,系統會移除舊的屬性名稱。受影響的屬性及其新名稱如下所示。

已移除資源 目前名稱
動態路徑 偏移路徑
動作偏移 偏移距離
動態旋轉 偏移旋轉
動作 碳補償

希望移除

從不安全的內容中移除 EME

使用 Encrypted Media Extensions (EME) 時,可能會曝露非開放原始碼的數位版權管理實作,包括存取永久專屬 ID,和/或以無沙箱防護或不具特殊權限的方式執行。由於任何人都可能會攻擊頻道上的任何使用者,因此對於透過不安全的 HTTP 曝光的網站,安全風險也會因此提高。此外,如果需要使用者同意,攻擊者可能會利用對不安全 HTTP 網站的接受要求。

我們已從 EME 第 1 版規格中移除不安全結構定義的支援,而提議的建議和後續最後最終推出的建議並未提供支援。您將無法在後續的建議或後續的建議中使用這項功能。這個 API 自 Chrome 44 版 (2015 年 5 月) 起,會針對不安全的來源顯示淘汰訊息。Chrome 58 現在已經移除。我們致力於移除不安全的來源中的強大功能,而這項變更便是其中一環。

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

移除 HTMLEmbedElement 和 HTMLObjectElement 的舊版呼叫端

介面有舊版呼叫端,表示執行個體可被呼叫為函式。HTMLEmbedElementHTMLObjectElement 目前支援這項功能。Chrome 57 版已淘汰這項功能。從 Chrome 58 版開始,呼叫會擲回例外狀況。

這項異動將讓 Chrome 符合近期規格異動。Edge 或 Safari 不支援舊版行為,因此會從 Firefox 中移除

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

移除預先標準 ChaCha20-Poly1305 加密

在 2013 年,Chrome 31 部署了以 Prof 為基礎的全新 TLS 加密套件,Dan Bernstein 的 ChaCha20 和 Poly1305 演算法。在 IETF 的 RFC 7539RFC 7905 區域中,經過之後標準化處理,但經過細微調整。我們已在 2016 年初透過 Chrome 49 推出標準化變化版本。我們目前正在移除前置標準變體。

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

移除憑證中的 CommonName 比對支援功能

RFC 2818 說明兩種將網域名稱與憑證比對的方法:使用 subjectAlternativeName 副檔名內的可用名稱;如果沒有 SAN 擴充功能,則會改回使用 commonNamecommonName 的備用方案已在 RFC 2818 中淘汰 (已於 2000 年發布),但一些傳輸層安全標準 (TLS) 用戶端仍將持續支援,但通常發生錯誤。

使用 subjectAlternativeName 欄位則無法明確區分憑證是否為 IP 位址或網域名稱表示繫結,且憑證在與名稱限制互動時全權定義。不過,commonName 並不明確,因此支援這項錯誤後,也是 Chrome 和其所使用的程式庫,以及大量傳輸層安全標準 (TLS) 生態系統中的安全性錯誤來源。

移除 commonName 的相容性風險偏低。RFC 2818 已於近二十年內淘汰這項功能,而基準要求 (所有公開信任憑證授權單位都必須遵循) 自 2012 年起出現 subjectAltName。自 Firefox 48 起,Firefox 已有新核發的公開信任憑證需要使用 subjectAltName

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

介面元素 regionsaddRegion()removeRegion() 已從 WebVTT 規格中移除,並已在 Chrome 58 版中移除,以配合最新規格。由於系統預設一律不啟用此功能 (表示在旗標後方),因此這項異動幾乎不會造成任何影響。需要替代的使用者可以使用 Chrome 58 中所新增的 VTTCue.region 屬性。

Chrome 狀態追蹤工具 | Chromium 錯誤

WebAudio:移除 AudioSourceNode 介面

AudioSourceNode 介面不屬於網路音訊規格的一部分、無法建構,也沒有屬性,因此基本上沒有任何開發人員可存取的功能。因此,我們會將其移除。

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

移除 webkitdropzone 全域屬性

dropzone 全域屬性採用 HTML5 拖曳規格做為一種宣告方法,用於指定 HTML 元素是拖曳作業的目標、可放置到元素的內容類型,以及拖曳作業 (複製/移動/連結)。

這個屬性無法吸引瀏覽器供應商之間的流量。Blink 和 WebKit 只會導入屬性 (webkitdropzone) 的前置字串格式。由於 dropzone 屬性已從 2017 年 3 月初從規格中移除,因此系統會將前置字串的版本從 Chrome 中移除。

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

淘汰不安全的通知使用行為

通知是強大的功能,可讓網站叫用系統 UI 來傳送私人資訊本身,或是私人資訊已變更的信號。攻擊者可能會窺探或竊取透過不安全的連線透過通知傳送的任何資訊。網路推送需要安全來源,因此這項變更會讓非推播通知與推播通知保持一致。我們致力於移除不安全的來源中的強大功能,而這項變更便是其中一環。

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

淘汰不安全 iframe 的通知使用方法

來自 iframe 的權限要求可能會混淆使用者,因為很難區分包含的網頁來源和提出要求的 iframe 來源。如果要求範圍不明確,使用者就無法判斷要授予或拒絕權限。

禁止在 iframe 中使用通知,也能夠讓通知權限要求與推播通知的相關規定保持一致,這樣開發人員就會覺得阻礙。

需要這項功能的開發人員可以開啟新視窗來要求通知權限。

Chrome 62 不支援這項功能。

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

移除 indexDB.webkitGetDatabaseNames()

當已建立索引的資料庫在 Chrome 中相對較新,且在前置字串方面造成重複性的影響,我們新增了這項功能。API 會以非同步方式傳回來源中的現有資料庫名稱清單,讓名稱顯得合理。

可惜的是,這項設計沒有問題,因為結果傳回後可能會立即過時,因此實際上只能用於記錄,而非嚴重的應用程式邏輯。GitHub 問題會追蹤先前討論替代方案的相關內容/連結,而這類問題必須採用其他方法。雖然開發人員受到開發人員的青睞,但由於缺少跨瀏覽器可以推動這個問題,因此程式庫作者已著手解決這個問題。

需要這項功能的開發人員需要自行開發解決方案。舉例來說,Dexie.js 等程式庫會使用全域資料表,該資料表本身是另一個資料庫來追蹤資料庫名稱。

這項功能已在 Chrome 60 版中移除。

意圖淘汰 | Chrome 狀態追蹤工具 | Chromium 錯誤