问题描述
在内容安全策略的上下文中,可以有一些元素被排除在策略之外,如果它们具有相应策略中指定的 nonce
属性。
显然这适用于一些 HTML 元素,例如<script nonce="...">
和 <style nonce="..."
。然而,对于某些人来说,它不起作用,例如 <iframe nonce="..." >
。
MDN Documentation 中写着提示:
注意: CSP nonce
源只能应用 nonceable 元素(例如,<img>
元素没有 nonce
属性,无法将其与此 CSP 源关联)。
是否有完整的不可识别元素列表?
MDN 列出了脚本和样式标签的 nonce
属性。另一方面,对于 nonce
元素,<link>
属性未列出,但仍然有效。还有更多这样的元素吗?
附带问题:为什么 <img>
和 <iframe>
不是 nonceable?
解决方法
在 MDN 文档中写了提示:
Note: The CSP nonce source can only be apply nonceable elements (e.g. as the <img>
是的,同时 2018 年 6 月 25 日发布的 Firefox v52.9 支持 <img>
、<iframe>
、<object >
、<embed>
、{{1 }} 和 <audio>
。如果您有 WinXP PC,则可以ensure that。
如上面的测试所示,目前只有 <video>
和 <style>
是 nonceables,尽管 CSP3 没有限制对任何 HTML 元素使用 nonce。