我目前正在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 *; " />
答案 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规则。