.net 5.0 更改内容安全策略标头的默认值

时间:2021-06-13 09:12:37

标签: .net header response content-security-policy

我正在 .net 5.0 上实现一个简单的 Web 应用程序。
在页面上,我有以下元素:

<img src="data:image/png;base64,iVBORw0..." >

当我在本地机器上运行代码时,一切顺利。但是当我在服务器上运行它时,我注意到没有显示图像。
原因是

<块引用>

拒绝加载图像'data:image/png;base64,iVBORw0...' 因为 它违反了以下内容安全策略指令: “默认-src https:”。请注意,'img-src' 没有明确设置,所以 'default-src' 用作后备。

我已经尝试了以下解决方案:

  • 1. 在标记中添加以下元标记:
  • 2. 添加 web.config 文件,内容如下:
       <system.webServer>
        <httpProtocol>
          <customHeaders>
            <clear/>
            <add name="Content-Security-Policy" value="default-src * 'unsafe-inline' 'unsafe-eval' data: blob:;" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
    
  • 3. 直接在控制器和中间件中添加了自定义标头。
  • 所有这些操作的结果是:我现在有 2 个 csp 响应头:

    <块引用>

    content-security-policy: default-src * 'unsafe-inline' 'unsafe-eval' 数据:blob:;
    内容安全策略:default-src https:

    第二个是标准的,第一个是我的。

    如果有人知道这是否可行以及如何更改 CSP 响应标头的默认值,请分享您的想法。因为在目前的情况下,我看不到使用带有内联数据的 IMG 元素的任何可能性。

    1 个答案:

    答案 0 :(得分:0)

    标题

    <块引用>

    content-security-policy: default-src https:

    不是由 .net 添加的,而是由代理添加的。
    结果:问题无效,应通过网络配置解决。