如何为 style-src-attr 或 script-src-attr 定义 nonce?

Posted

技术标签:

【中文标题】如何为 style-src-attr 或 script-src-attr 定义 nonce?【英文标题】:How to define nonce for style-src-attr or script-src-attr? 【发布时间】:2020-10-29 03:47:15 【问题描述】:

我正在尝试使用内容安全策略 (CSP) 锁定我的网页。默认 CSP 限制性太强(我无法更改代码以使其符合要求,因为它来自第 3 方),因此我试图在 CSP 中定义最小权限集。为此,我想使用 style-src-attr 和 script-src-attr。我想将这些与随机数一起使用。我可以看到如何在 CSP 中为这两个指定随机数。我不确定的是如何为 html 元素(在 style-src-attr 的情况下)和 javascript 对象(在 script-src-attr 的情况下)指定 nonce。我找了一个例子,但找不到任何东西。请举例说明如何做到这一点。

【问题讨论】:

【参考方案1】:

在实际准备有关该主题的讲座时,我偶然发现了这个问题。这个问题的答案是:你不能。

查看 CSP 规范 (https://www.w3.org/TR/CSP3/#match-element-to-source-list),只有脚本或样式标签可以是 nonced。根据规范 (https://w3c.github.io/webappsec-csp/#directive-script-src-attr),-attr 变体不适用于独立元素(脚本标签、样式标签或指向 CSS 文件的链接)

script-src-attr 指令适用于事件处理程序,如果存在,它将覆盖 script-src 指令以进行相关检查。

底线,在当前规范中,应该不可能允许事件处理程序通过随机数。可以依赖 unsafe-hashes 并将已知事件处理程序的哈希值放在那里,但即使这样在浏览器中也不完全支持(FF 和 Safari 缺乏支持,请参阅 https://caniuse.com/mdn-http_headers_csp_content-security-policy_unsafe-hashes)

【讨论】:

令人失望,但这正是我所怀疑的。感谢您的确认。

以上是关于如何为 style-src-attr 或 script-src-attr 定义 nonce?的主要内容,如果未能解决你的问题,请参考以下文章

如何为特定目录或文件启用特定 gcc 警告? [复制]

如何为使用 AJAX 获取的页面或内容添加书签?

如何为应用程序创建计算机或脚本语言?

如何为以下示例创建自定义格式、公式或 VBA 代码?

如何为反应组件提供 Id 或 Attribute

如何为 QTableWidgetItem 设置“普通”或“平面”背景颜色