【问题标题】:How to associate nonce attribute random id with inline JavaScript如何将 nonce 属性随机 id 与内联 JavaScript 关联
【发布时间】:2021-06-26 12:37:01
【问题描述】:

我正在网站上添加内容安全策略限制。所以内联 JS 和 CSS 不再可用。但是我应该在每个页面上都有一些内联 JS,因此我添加了 nonce 属性。 我应该为页面上的每个内联脚本和 css 生成新的随机 id

<html>
<head>
<script src="url/example1.js" nonce="id-1"/>
<script src="url/example2.js" nonce="id-2"/>
<script src="url/example3.js" nonce="id-3"/>
</head>
</html>

或者我可以生成一个 id 并为页面上的每个 JS 和 CSS 重用它(是否像上面的方式一样安全)?

<html>
<head>
<script src="url/example1.js" nonce="id-1"/>
<script src="url/example2.js" nonce="id-1"/>
<script src="url/example3.js" nonce="id-1"/>
</head>
</html>

对我来说,这两种方法都很好,但 CSP 标头有长度限制(1024 个字符)。每个 id 看起来都像“nonce-{20..30 chars}”。存在下一个新的内联 JS 可能被拒绝的风险...

【问题讨论】:

  • ...but CSP header has length limit(1024 chars)... - 真的不是这样。我使用 5036 个字符长度的 CSP 标头。 https://twitter.com/ 的 CSP 长度为 2560 个字符。我只遇到了一个限制 - LimitRequestFieldsize=8190 字节作为 Ahache 服务器中 all HTTP 标头的最大大小。一些旧手机的浏览器也限制了标题的输入缓冲区。

标签: javascript content-security-policy nonce


【解决方案1】:

https://www.w3.org/TR/CSP3/#security-nonces 表示您应该在每次提交保单时生成一个唯一值。这意味着您可以在整个文档中重复使用 nonce。在下一页加载时,您需要一个新的随机数。

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多