在幾乎所有版本的 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>
元素中的項目,不論 type
或 language
屬性的值為何,但在剖析時不會執行指令碼。淘汰擷取功能後,預先載入掃描器和剖析器就會具有相同的語意,我們也不會針對不會使用的指令碼啟動擷取作業。這項功能旨在為前往含有大量後續處理自訂指令碼標記 (例如 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 版中淘汰,目前已移除。