【问题标题】:Which HTML elements are nonceable?哪些 HTML 元素是不可识别的?
【发布时间】:2021-04-17 22:47:42
【问题描述】:

内容安全策略的上下文中,如果元素具有相应策略中指定的nonce 属性,则可能会从策略中排除这些元素。

显然这适用于某些 HTML 元素,例如<script nonce="..."><style nonce="..."。然而,对于某些人来说,它不起作用,例如<iframe nonce="..." >

MDN Documentation中写着提示:

注意: CSP nonce 源只能应用 nonceable 元素(例如<img> 元素没有nonce 属性,没有办法将其与此 CSP 源相关联)。

是否有完整的不可行元素列表? MDN 列出了脚本和样式标签的nonce 属性。另一方面,nonce 属性 not<link> 元素列出,但仍然有效。还有更多这样的元素吗?

附带问题:为什么 <img><iframe> 不是不可识别的?

【问题讨论】:

  • 二进制文件太昂贵,无法检查 nonce 合规性。此外,一些浏览器在检测到连接速度较慢时会提供质量降低的图像版本。显然,这些不符合指定的随机数。
  • 根据This Q&A 看来只有Script/Style 元素是不可取的,并且随着这个问题的观众和赞成票的数量,我希望如果它不是真的有人会现在已经注意到并发表了评论.....
  • CSP 规范要求 UA 仅检查 scriptstyle 元素的随机数。在w3c.github.io/webappsec-csp/#match-element-to-source-list 的算法中,请参见第 2 步:如果类型是“脚本”或“样式”,以及 §6.6.3.1 元素是否不可确定?返回“Nonceable”...w3c.github.io/webappsec-csp/#is-element-nonceableIs element nonceable? 算法本身不仅仅检查scriptstyle 元素——但目前规范只调用script & style 元素的算法。因此,如果您在任何其他元素上放置随机数,规范要求浏览器忽略它

标签: html attributes content-security-policy nonce


【解决方案1】:

在 MDN 文档中有这样的提示:

Note: The CSP nonce source can only be apply nonceable elements (e.g. as the <img>

是的,同时 Firefox v52.9 版本 25/06/2018 支持 &lt;img&gt;&lt;iframe&gt;&lt;object &gt;&lt;embed&gt;&lt;audio&gt;&lt;video&gt; 的随机数。如果你有 WinXP 电脑,你可以ensure that

如上面的测试所示,目前只有 &lt;style&gt;&lt;script&gt; 是 nonceables,即使 CSP3 不限制对任何 HTML 元素使用 nonce。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2011-01-24
    • 2010-12-08
    • 2015-12-09
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多