是否可以在Asp.net Web.config中添加多个内容安全策略指令?

jta*_*loc 10 asp.net security content-security-policy

我目前正在我们的Asp.net应用程序中应用安全措施,并且必须解决一些问题,如x-frame-options,但在如何添加多个内容安全策略指令方面遇到了困难.

我搜索了很多,并没有找到关于如何在web.config中添加多个CSP指令的确切解决方案,但只能通过像blog.simontimms.com这样的代码.

目前这是我的CSP:

<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-Frame-Options" value="ALLOW-FROM http://subdomain.domain.com" />
    <add name="Content-Security-Policy" value="frame-ancestors http://subdomain.domain.com" />
  </customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在Asp.net web.config中添加多个内容安全策略指令?我试过下面用半冒号分隔的配置,但它不起作用:(

<add name="Content-Security-Policy" value="frame-ancestors http://subdomain.domain.com; img-src *; " />
Run Code Online (Sandbox Code Playgroud)

更新:

我认为上面的代码是添加多个指令的正确语法.我只是错过了'self'框架 - 祖先导致运行时错误,这让我觉得起初它是错的.

附加信息:

如果你运行了一些问题,你有很多子域,你可以'*'在其上放置通配符,如:

<add name="Content-Security-Policy" value="frame-ancestors 'self' http://*.domain.com; img-src *; " />
Run Code Online (Sandbox Code Playgroud)

Meh*_*nce 6

您可能想要使用NWebsec.请看下面的Troy Hunt示例.(http://www.troyhunt.com/2015/05/implementing-content-security-policy.html)

 <content-Security-Policy enabled="true">
  <default-src self="true" />
  <script-src unsafeInline="true" unsafeEval="true" self="true">
    <add source="https://www.google.com" />
    <add source="https://www.google-analytics.com" />
    <add source="https://cdnjs.cloudflare.com" />
  </script-src>
  <style-src unsafeInline="true" self="true">
    <add source="https://cdnjs.cloudflare.com"/>
  </style-src>
  <img-src self="true">
    <add source="https://az594751.vo.msecnd.net"/>
    <add source="https://www.google.com"/>
    <add source="https://www.google-analytics.com" />
  </img-src>
  <font-src>
    <add source="https://cdnjs.cloudflare.com"/>
  </font-src>
  <object-src none="false" />
  <media-src none="false" />
  <frame-src none="false" />
  <connect-src none="false" />
  <frame-ancestors none="false" />
  <report-uri enableBuiltinHandler="true"/>
</content-Security-Policy>
Run Code Online (Sandbox Code Playgroud)

NWebsec是一个易于使用的ASP.NET应用程序安全库.通过几行配置,您可以设置重要的安全标头,检测可能存在危险的重定向,控制缓存标头以及删除版本标头.有关文档,请参阅项目网站

我相信它能够添加多行CSP规则.

https://www.nuget.org/packages/NWebsec