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

时间:2015-11-03 07:45:35

标签: 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>

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

<add name="Content-Security-Policy" value="frame-ancestors http://subdomain.domain.com; img-src *; " />

更新

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

其他信息:

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

<add name="Content-Security-Policy" value="frame-ancestors 'self' http://*.domain.com; img-src *; " />

1 个答案:

答案 0 :(得分:5)

您可能想要使用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>
  

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

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

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