可以說,「SharedArrayBuffer
」在
但一切都停滯不前以下是一些注意事項:
簡短
SharedArrayBuffer
目前支援 Firefox 79 以上版本,且將在 Android 裝置上使用 Chrome 88。不過,僅適用於跨來源隔離的網頁。- 「
SharedArrayBuffer
」目前適用於電腦版 Chrome,不過僅限 Chrome 92 僅限於跨來源隔離頁面。如果您不想 可及時變更,您可以註冊來源試用,在 Chrome 或 Chrome 版本前保留現行行為 113. - 如果打算啟用跨來源隔離,以便繼續使用
SharedArrayBuffer
會評估這項異動對其他跨來源的影響 網站上的 元素,例如廣告刊登位置檢查是否SharedArrayBuffer
您的任何第三方資源會運用它來瞭解 指引。
跨來源隔離總覽
只要在網頁中提供含有以下項目的網頁,即可隔離不同來源: 標題:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
連結後,您的網頁將無法載入跨來源內容,除非您
資源透過 Cross-Origin-Resource-Policy
明確允許這項資源
標頭或 CORS 標頭
(Access-Control-Allow-*
等)。
此外還有 Reporting API,
收集作業失敗時,
Cross-Origin-Embedder-Policy
和Cross-Origin-Opener-Policy
。
如果不方便及時變更 Chrome 92 版本, 註冊來源試用,即可繼續使用目前的電腦版 Chrome 至少 Chrome 113 版本才會運作。
防禦者為何會陷入困境?
SharedArrayBuffer
已於 2017 年 7 月推出 Chrome 60,歡迎各位的使用者
根據日期而非 Chrome 版本的時間),所有事情都很棒。
為期 6 個月。
2018 年 1 月,某些熱門 CPU 發現安全漏洞。詳情請參閱 公告 但基本上是指程式碼可以使用高解析度 讀取記憶體不該讀取的計時器。
我們希望允許網站執行,因此造成瀏覽器廠商的問題 以 JavaScript 和 WASM 格式編寫程式碼,但嚴格控管這份 存取碼。如果造訪網站,我就不能讀取 與您開啟的網路銀行網站一樣事實上,我不應該 甚至知道你已開啟網路銀行網站這些基礎知識 網路安全。
為解決這個問題,我們降低了高解析度計時器的解析度,
使用 performance.now()
。不過,你可以使用以下指令,建立高解析度計時器
SharedArrayBuffer
,方法是在 worker 緊密迴圈中修改記憶體,並讀取
再回到另一個討論串中如果沒有必要,就無法有效緩解這個情況
嚴重影響意料之外的程式碼,因此已停用 SharedArrayBuffer
以致於可能必須趕在最後一刻
大幅更動專案,甚至將專案全部取消
常見的緩解方式是確保網頁的系統程序不包含 儲存的資料Chrome 已投入許多程序 一開始的架構 (記得這句話?), 但許多網站的資料也可能是同一程序的:
<iframe src="https://your-bank.example/balance.json"></iframe>
<script src="https://your-bank.example/balance.json"></script>
<link rel="stylesheet" href="https://your-bank.example/balance.json" />
<img src="https://your-bank.example/balance.json" />
<video src="https://your-bank.example/balance.json"></video>
<!-- …and more… -->
這些 API 都有「舊版」允許從其他來源的內容 而未從其他來源選擇加入的項目。這類要求是透過 其他來源的 Cookie,因此資料完整「已登入」請求。現代新作 API 需要其他來源透過以下方式選擇加入: CORS:
解決這些舊版 API 的問題時,會阻止系統將內容輸入 如果網頁顯示「不正確」,且稱之為跨來源讀取封鎖,就表示該網頁的處理程序。 因此在上述情況下,將不允許 JSON 進入程序,因為 和這些 API 的有效格式也就是除了 iframe 以外,針對 iframe 將內容放在不同程序
因應這些因應措施後,我們在 Chrome 中重新推出 SharedArrayBuffer
68 (2018 年 7 月),但僅限於桌機。額外的流程要求
無法在行動裝置上執行相同的操作該公司也發現 Chrome 的解決方案
不完整,因為我們只封鎖「不正確」資料格式,但
雖然難以猜到,有效的 CSS/JS/圖片
含有私人資料。
人們齊心協力,打造更完善的跨瀏覽器體驗
解決方案解決方案的宗旨是,在網頁上
將其他來源的內容直接導入這個程序。」
這項宣告是透過 COOP 和 COEP 標頭完成
隨著頁面顯示瀏覽器會強制執行
存取 SharedArrayBuffer
和其他功能類似的 API。其他來源
使用者可以透過以下方式啟用內容嵌入功能:
Cross-Origin-Resource-Policy
敬上
或 CORS。
Firefox 是最早透過這項限制出貨的 SharedArrayBuffer
。網址:
第 79 版 (2020 年 7 月)。
然後我寫在 2021 年 1 月,你閱讀了這篇文章。你好!
目前這就是我們的現況Chrome 88 將SharedArrayBuffer
重新帶入
針對跨來源隔離的網頁,Chrome 第 92 版亦提供相同做法
對一致性及實現跨來源總量的要求
和隔離機制
延遲 Chrome 電腦版變更
此為「來源試用」形式的暫時性例外狀況幫助大眾
花更多時間導入跨來源隔離網頁。這可讓您
SharedArrayBuffer
,且無須要求頁面跨來源隔離。
在 Chrome 113 中會有例外,只有電腦版的例外情況才會解除。
。
- 針對來源要求權杖。
- 將權杖加入網頁。方法有以下兩種:
- 在每一頁的頁首加入
origin-trial
<meta>
標記。例如: 如下所示:
<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
- 如果您可以設定伺服器,也可以新增
使用
Origin-Trial
HTTP 標頭產生的回應標頭 如下所示:
Origin-Trial: TOKEN_GOES_HERE
- 在每一頁的頁首加入
延伸閱讀
橫幅相片由 Daniel 提供 Gregoire位於 Unsplash