哪些HTML元素可以使用nonce属性?

9
内容安全策略 的背景下,如果特定策略中规定的元素具有 nonce 属性,则可以将这些元素排除在策略之外。
显然,这对某些 HTML 元素有效,例如 <script nonce="..."><style nonce="..."。但是,对于某些元素,例如 <iframe nonce="..." >,它不起作用。
MDN 文档中写道:

注意: CSP nonce 源仅适用于可应用 nonce 属性的元素(例如 <img> 元素无 nonce 属性,因此无法与此 CSP 源相关联)。

是否有可应用 nonce 属性的完整元素列表? MDN 列出了 script 和 style 标签的 nonce 属性。另一方面,<link> 元素没有列出 nonce 属性,但是它仍有效。还有其他类似的元素吗?
附带问题:为什么 <img><iframe> 不可应用 nonce 属性?

二进制文件检查nonce合规性的成本太高了。此外,一些浏览器在检测到慢速连接时会提供降低质量的图像版本。这显然不符合指定的nonce。 - connexo
1
根据此问答,似乎只有Script / Style元素是可随机值属性的,考虑到这个问题的观看人数和点赞数,如果不是真的,现在应该已经有人注意到并发表评论了..... - Martin
1
CSP规范要求用户代理仅检查scriptstyle元素的nonce。在https://w3c.github.io/webappsec-csp/#match-element-to-source-list中的算法中,参见第2步:*如果类型为“script”或“style”,并且§ 6.6.3.1返回“Nonceable”的元素是否具有nonce?* 在https://w3c.github.io/webappsec-csp/#is-element-nonceable中,“元素是否具有nonce?”算法本身并不仅仅检查`script`和`style`元素-但是目前规范仅针对`script`和`style`元素调用该算法。因此,如果您在任何其他元素上放置nonce,则规范要求浏览器忽略它。 - sideshowbarker
1个回答

2

In the MDN Documentation is written the hint:

Note: The CSP nonce source can only be apply nonceable elements (e.g. as the <img>
是的,同时Firefox v52.9发布于2018年6月25日,支持在<img><iframe><object ><embed><audio><video>中使用nonce。如果您使用WinXP PC,您可以点击这里进行验证。
如上面的测试所示,目前只有<style><script>是可用nonce的,尽管CSP3不限制任何HTML元素的nonce使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接