在絕大多數的 Chrome 版本中,我們都發現大量的更新和改善項目,包含產品、效能和網路平台的功能。本文說明 Chrome 56 的淘汰及移除功能 (於 12 月 8 日推出 Beta 版)。這份清單隨時可能有所變動。
停止支援 SHA-1 憑證
SHA-1 加密編譯雜湊演算法在 11 年前首次顯示出弱點,近期的研究則指出最可能直接影響網路公開金鑰基礎架構 (PKI) 完整性的攻擊行為。
為保護使用者不受這類攻擊,Chrome 56 起將不再支援 SHA-1 憑證 (預計於 2017 年 1 月推出穩定版)。造訪使用這類憑證的網站時,系統會顯示插頁式警告。如需更多詳細資訊,請參閱 Chrome 安全性網誌。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
移除傳輸層安全標準 (TLS) 中的 CBC 模式 ECDSA 加密
TLS 的 CBC 模式建構不良,因此變得較脆弱且難以安全地實作。雖然 CBC 模式加密仍廣泛用於 RSA,但與 ECDSA 幾乎並不存在。其他瀏覽器仍支援這些加密機制,我們相信風險較低。此外,少數機構採用傳輸層安全標準 (TLS) 中的 ECDSA,通常採用較複雜的設定 (部分舊版用戶端僅支援 RSA),因此我們希望 ECDSA 網站可以獲得更好的維護,並在發生問題時採取更回應。
TLS 1.2 已根據 AEADs 新增加密作業,以避免這些問題 (尤其是 AES_128_GCM、AES_256_GCM 或 CHACHA20_POLY1305)。雖然我們目前只要求 ECDSA 型網站使用此功能,但我們建議所有系統管理員都這麼做。以 AEAD 為基礎的加密不僅可以提升安全性,也能提升效能。AES-GCM 對近期 CPU 和 ChaCha20-Poly1305 提供硬體支援,並允許快速軟體實作。同時,CBC 加密則需要執行緩慢的複雜緩解措施,以及每個傳出記錄的 PRNG 存取。採用 AEAD 的加密也是 HTTP/2 和 False Start 最佳化的先決條件。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
從觸控捲動中移除使用者手勢
我們已經看到多個範例,說明文字品質不佳或惡意廣告,會在 touchstart
或所有 touchend
事件上觸發觸控捲動瀏覽動作。如果「輪盤」事件無法開啟彈出式視窗,則觸控捲動功能不應也不應。這可能會中斷某些情況,例如媒體無法在觸控時播放,或者是使用者輕觸時無法開啟彈出式視窗。發生上述任何情況時,Safari 一直無法顯示彈出式視窗。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
不允許對類型/語言屬性無效的指令碼進行所有擷取
無論 type
或 language
屬性的值為何,Chrome 的預先載入掃描器目前都會擷取 <scripts>
元素中的項目,但剖析時並不會執行指令碼。透過淘汰擷取作業,預先載入掃描器和剖析器將有相同的語意,而且我們不會針對不會使用的指令碼啟動擷取作業。這項資料是儲存使用者前往的網站時,如果他們擁有大量經過後續處理的自訂指令碼標記 (例如 type="text/template"
),就能儲存資料。
使用無效指令碼對伺服器進行連線偵測 (ping) 伺服器的用途,充分涵蓋 sendBeacon API。
這項變更會根據 Chrome 與 Safari 保持一致,但無論類型或語言為何,Firefox 仍會要求指令碼。
意圖移除 | Chrome 狀態追蹤工具 | 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 錯誤
移除反映的 xss CSP 指令
內容安全政策等級 2 規格的早期草稿包含 reflected-xss
指令,該指令提供的只有不同語法的 X-XSS-Protection
標頭。這個指令已從 2015 年的規格中移除,但在 Chrome 中實作之前則尚未移除。
我們現在會移除這項指令的支援功能。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
替換 CSP「referrer」指令
CSP referrer
指令可讓網站擁有者透過 HTTP 標頭設定參照網址政策。這項功能不僅使用率極低,也不再是任何 W3C 規格的一部分。
如果網站仍需要這項功能,則應使用 <meta name="referrer">
或新的 Referrer-Policy 標頭。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
移除 PaymentAddress.careOf 欄位
PaymentAddress
介面含有非標準 careOf
欄位 (沒有已知的地址標準支援該欄位)。careOf
欄位也是非必要的,收件者和機構欄位可以充分支援所有必要用途。新增 careOf
對現有郵寄地址結構定義和 API 的互通性而言,會造成重大問題。詳情請參閱 GitHub 的規格移除提案。
移除 SVGViewElement.viewTarget
SVGViewElement.viewTarget
屬性不屬於 SVG2.0 規格的一部分,使用太小或不存在。這項屬性已在 Chrome 54 版中淘汰,現已移除。