1

我正在尝试让浏览器链接在 .net 核心 asp.net 应用程序上工作。尽管我正确设置了 CSP(至少我认为是这样),但 Chrome 似乎正在使用默认值。这是我在控制台中看到的:

控制台错误

这是我在所有视图使用的共享布局中所拥有的:

定义 CSP 的代码

这是按 Ctrl+U 时在浏览器 (Chrome) 上呈现的源代码:

这是 head 标记中的 CSP 元标记

令人困惑的部分是控制台中的错误消息说 default-src 设置为“self”,这显然不是这种情况;我指定default-src https://localhost:*;

我在这里遗漏了什么还是这是谷歌浏览器的问题?也许是我不知道的设置,但我已经在网上搜索并没有找到解决此问题的方法。

4

1 回答 1

1

令人困惑的部分是控制台中的错误消息说 default-src 设置为“self”,这显然不是这种情况;我指定default-src https://localhost:*;

那是因为您的 asp.net 应用程序通过 HTTP 标头发布 CSP(您可以看到它)。

因此,您交付了 2 个 CSP:一个通过元标记,第二个 - 通过 HTTP 标头。在这种情况下,两者都会被应用,并且最严格的会阻塞。

检查web.config文件中的以下行:

<add name="Content-Security-Policy" value="default-src 'self'" />
<content-Security-Policy enabled="true">

还要检查NWebsec NuGetweb.config包设置 - 它可以通过文件、中间件或 MVC 属性发布 CSP 标头:

  • NWebsec.AspNetCore.Mvc 包通过 MVC 属性提供配置 CSP。
  • NWebsec.AspNetCore.Mvc.TagHelpers 包包括标签助手来管理脚本和样式“nonce”。
  • NWebsec.AspNetCore.Middleware 包包括 OWIN CSP 中间件。

您必须使用元标记或 HTTP 标头来发布内容安全策略,但不能同时使用两者。

于 2021-12-02T13:42:17.827 回答