iis - 在 IIS 站点中添加绑定特定的 CSP 框架祖先 HTTP 标头
问题描述
在 IIS 中,我们有一个 Site,其中包含许多绑定,假设 Site1 具有绑定www.siteone.com、www.sitetwo.com。现在我必须只为一个绑定添加 CSP -frame-ancestors ,即仅为 "www.siteone.com" 添加 CSP 标头,而不是 "www.sitetwo.com" 。
如果我们在 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.请开启 URL 重写模块 https://www.iis.net/downloads/microsoft/url-rewrite
2.为REPONSE_Content-Security-Policy设置允许变量。
3.请应用此前提条件和出站规则。
<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>
推荐阅读
- javascript - extjs中多选组合框中的选定值
- ios - iOS Swift 4: Uploading Videos to YouTube
- c# - Using generic parameter as base class
- asp.net - ActionMailer.net/ActionMailerNext - 如何确认电子邮件是否已发送?
- javascript - 我可以使用 lambda 调用将路径参数传递给另一个 lambda 函数吗?
- google-maps - 检查坐标是否包含在谷歌地图的圆圈内?
- javascript - Udacity 谋杀之谜 - javascript 不保存变量
- ios - 如何在swift 3.0的uitableviewcell中合并两个结构并打印两者的值
- python - UnicodeDecodeError 读取 CSV 文件
- javascript - AssertionError [ERR_ASSERTION]:mongodb 中需要处理程序(func)