javascript - 内容安全策略多重随机数

标签 javascript html content-security-policy nonce websecurity

我有一个单页面应用程序(内置于.net core MVC 2.2),其中 html 部分是动态加载的。

在主文档上,添加带有动态生成 header 的 CSP 策略,如下所示:

Content-Security-Policy: script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'

然后是通过 jquery ajax 加载函数加载的页面部分。 page 部分包含一个带有随机数的脚本(来自 src)。带有 CSP header 的页面部分看起来像

Content-Security-Policy: script-src 'self' 'nonce-ci5TQsyidT8x2jwBLRHS'

一切都很好,但浏览器(chrome、safari 阻止脚本),带有消息:

jqueryscriptsbundle.js:formatted:43 Refused to execute inline script 
because it violates the following 
Content Security Policy directive: "script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'

因此浏览器正在将脚本的随机数(即 ci5TQsyidT8x2jwBLRHS)与根/主页随机数值 I64vb811BxRNGV9Xf0pM 进行比较,因此脚本被阻止。

这是正确的行为吗?我该怎么做才能让它发挥作用?

最佳答案

随页面加载的初始 CSP 提供了一个随机数。您想要做的是在初始页面加载后通过 Ajax 添加另一个随机数。 CSP 明确不允许这样做;这不是一个错误——这才是重点。

您可能会做的是允许 strict-dynamic 的 script-src。这允许您授权脚本,并且该脚本加载的任何内容也会被授权。请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

关于javascript - 内容安全策略多重随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59731606/

相关文章:

javascript - Chrome 扩展 “Refused to load the script because it violates the following Content Security Policy directive”

google-chrome - 内容安全政策... translate.googleapis.com?

php - 当用户选择图像文件时,如何使用本地路径更新图像 src?

javascript - 随机播放 <ul> 中的 12 个 <li> 元素,不包括列表中的 3 个元素

javascript - 无法从 VUE 向 ESP32 https 服务器发出 POST 请求

asp.net - 使用 <pre> 标签时,文本超出父级 <asp :label> border

javascript - 仅在 SImpleWebRTC 中启动音频通话

javascript - 防止 symfony 提交表单上的事件

html - 使用 Bootstrap 在页面上居中媒体对象

security - 当我有两个 CSP(内容安全策略)策略时会发生什么 - header 和元?