Chrome 83 穩定版釋出了,以下是最主要的更新內容:
基於 DOM 的跨站點指令碼(DOM XSS)是最常見的 Web 安全漏洞之一。可信型別(Trusted types)可以幫助防止此類漏洞,因為它們會要求你在將資料傳遞給潛在的危險之前對其進行處理。
以 innerHTML
為例,如果啟用了可信型別,那麼如果嘗試傳遞一個字串,它將丟擲一個 TypeError,因為瀏覽器不知道它是否可以信任該字串。
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
相替代地,需要使用諸如 textContent
之類的安全函式,傳入可信型別,或者建立該元素並使用appendChild()
。
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
Chrome 和 Edge 進行了合作,以改善 HTML 表單控制元件的外觀和功能。下圖顯示了 Chrome 中某些控制元件的新舊版本對比(左舊右新)。
除了新的視覺風格之外,微軟還提供了更好的觸控支援和輔助功能,同時改進了鍵盤支援。
一些 Web API 會增加諸如 Spectre 之類的旁道攻擊的風險。為了減輕這種風險,Chrome 提供了一個基於選擇加入的隔離環境,稱為跨域隔離。這是透過兩個新的 HTTP 標頭完成的: Cross-Origin-Embedder-Policy
和 Cross-Origin-Opener-Policy
。使用這些標頭,網頁可以安全地使用特權功能,包括:
Performance.measureMemory()
跨域隔離狀態還可以防止對document.domain
進行修改。
有這樣一組常見的訊號——“Core Web Vitals”——對所有 Web 體驗都至關重要。此類核心使用者體驗需求包括頁面內容的載入體驗、互動性和視覺穩定性,並且這些共同構成了 2020 Core Web Vitals 的基礎。
用 measureMemory()
測量記憶體
performance.measureMemory()
是一個新的 API,可用於測量頁面的記憶體使用情況並檢測記憶體洩漏。
更新原生檔案系統 API
原生檔案系統(Native File System)API 在 Chrome 83 中啟動了一項新的源程式試用版,該版本支援可寫流,並且可以儲存檔案控制代碼。
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.
}
可寫流使寫入檔案變得更加容易,並且可以輕鬆地將響應從一個流傳輸到另一個流。
將檔案控制代碼儲存到 IndexedDB 允許使用者儲存狀態或記住使用者正在處理哪些檔案。例如,保留最近編輯的檔案列表、開啟使用者正在使用的最後一個檔案等等。
詳情可查閱:https://developers.google.com/web/updates/2020/05/nic83
[admin
]