对于内容安全策略,我如何允许 self 和静态 url 以及不安全的 JS?
For content security policy how do I allow self and a static url as well as unsafe JS?
我正在尝试在 web.config 中的 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>
这意味着我最终得到一个 header,如下所示:
default-src 'self' https://static.mydomain.com unsafe-inline unsafe-eval
但是我的页面仍然失败,因为不允许使用内联脚本。我猜我希望我的 header 看起来像:
default-src 'self unsafe-inline unsafe-eval' https://static.ozcruising.com.au
所以我的问题是如何更改我的 NWebSec 配置以允许从页面本身(同源)允许内联脚本以及支持从 https://static.mydomain.com 提供内容?
unsafe-inline 仅与 script-src 和 style-src 相关,unsafe-eval 仅与 script-src 相关。因此这些不能在 default-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>
您必须在 script-src 和 style-src 中再次指定 self 和 static.mydomain.com,因为更具体的 *-src 会清除 default-src 指定的所有内容。
我正在尝试在 web.config 中的 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>
这意味着我最终得到一个 header,如下所示:
default-src 'self' https://static.mydomain.com unsafe-inline unsafe-eval
但是我的页面仍然失败,因为不允许使用内联脚本。我猜我希望我的 header 看起来像:
default-src 'self unsafe-inline unsafe-eval' https://static.ozcruising.com.au
所以我的问题是如何更改我的 NWebSec 配置以允许从页面本身(同源)允许内联脚本以及支持从 https://static.mydomain.com 提供内容?
unsafe-inline 仅与 script-src 和 style-src 相关,unsafe-eval 仅与 script-src 相关。因此这些不能在 default-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>
您必须在 script-src 和 style-src 中再次指定 self 和 static.mydomain.com,因为更具体的 *-src 会清除 default-src 指定的所有内容。