在 IIS 站点中添加绑定特定 CSP frame-ancestors HTTP header

Add binding specific CSP frame-ancestors HTTP header in IIS Site

在 IIS 中,我们有一个站点,里面有很多绑定,假设站点 1 有绑定 www.siteone.com, www.sitetwo.com。现在我必须为一个绑定添加 CSP -frame-ancestors 即仅为“www.siteone.com”添加 CSP header,而不是为“www.sitetwo.com”添加 CSP header。

如果我们在 web.config 中添加以下行,那么这些设置将应用于所有绑定。我们是否有任何条件方法可用于应用 CSP -frame-ancestors 仅适用于 www.siteone.com

 <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
        <clear />
        <add name="Content-Security-Policy" value="frame-ancestors 'self' http://www.ancestorssite.com https://www.ancestorssite.com" />     
      </customHeaders>
    </httpProtocol> 

我尝试了下面的 IIS 重写规则,但它没有显示

<rule name="whitelist-site- iframe">
  <match url="(.*)"  />
  <conditions>
  <add input="{HTTP_HOST}" pattern="^.*\.?www.siteone\.com$" /> 
   <add input="{HTTP_Content_Security_Policy}" pattern="frame-ancestors ^.*\.?www.ancestorssite\.com$" />
  </conditions>
 <action type="Rewrite" url="https://www.siteone.com" />
</rule> 

您可以使用 IIS 出站规则实现此目的

1.Please启用URL重写模块 https://www.iis.net/downloads/microsoft/url-rewrite

2.Set 允许 REPONSE_Content-Security-Policy.

的变量

3.Plesae 应用此前提条件和出站规则。

   <outboundRules>
                <rule name="123" preCondition="Precondition1">
                    <match serverVariable="RESPONSE_Content-Security-Policy" pattern="(.*)" />
                <action type="Rewrite" value="frame-ancestors 'self' http://www.ancestorssite.com https://www.ancestorssite.com" />
            </rule>
            <preConditions>
                <preCondition name="Precondition1">
                    <add input="{HTTP_HOST}" pattern="www.siteone.com" />
                </preCondition>
            </preConditions>
        </outboundRules>