对于内容安全策略,我如何允许self和静态url以及不安全的JS



我正试图在ASP中配置它。NET MVC应用程序,如下所示:

<nwebsec>
<httpHeaderSecurityModule xmlns="http://nwebsec.com/HttpHeaderSecurityModuleConfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NWebsecConfig/HttpHeaderSecurityModuleConfig.xsd">
<securityHttpHeaders>
<content-Security-Policy-Report-Only enabled="true">
<default-src self="true">
<add source="https://static.mydomain.com" />
<add source="unsafe-inline" />
<add source="unsafe-eval" />
</default-src>
</content-Security-Policy-Report-Only>
</securityHttpHeaders>  
</httpHeaderSecurityModule>
</nwebsec>

这意味着我最终得到的标题如下:

default-src 'self' https://static.mydomain.com unsafe-inline unsafe-eval

但这仍然使我的页面失败,因为不允许使用内联脚本。我想我想我的标题看起来像:

default-src 'self unsafe-inline unsafe-eval' https://static.ozcruising.com.au

因此,我的问题是如何更改我的NWebSec配置,以允许从页面本身(同源(提供内联脚本,并支持从https://static.mydomain.com?

Unsafe inline仅与脚本src和样式src相关,而Unsafe eval仅与脚本src相关。因此,这些不能在默认src级别进行配置。你必须这样做:

<default-src self="true">
<add source="https://static.mydomain.com" />
</default-src>
<script-src self="true" unsafeInline="true" unsafeEval="true">
<add source="https://static.mydomain.com" />
</script-src>
<style-src self="true" unsafeInline="true">
<add source="https://static.mydomain.com" />
</style-src>

您必须在脚本src和样式src中再次指定self和static.mydomain.com,因为更具体的*-src会清除默认src指定的所有内容。

最新更新