我在 ServerFault 上发布了同样的问题,但那里似乎没有太多流量,所以我想我也可以在这里发布它。
我正在尝试为我们的 CSP 标头策略实现一个随机数。我想从 script-src 策略中删除“不安全内联”,因为 Angular 现在支持为其内联脚本绑定随机数,但我很难弄清楚如何使用初始内容传递随机数Windows 上的响应标头(也完全有可能我完全误解了这个过程)。
我们使用 Azure 应用服务进行托管,并使用 Azure 前门作为防火墙/负载均衡器。我觉得这里有两种可能的选择:
根据我的尝试,我没有找到在 IIS 中配置标头以支持随机数的方法。我确实有一个 web.config 文件,允许我添加 CSP 标头,但我无法将静态字符串以外的任何内容分配给该文件。
这是我的 web.config 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains"/>
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="Content-Security-Policy" value="
****** SPACING ADDED FOR READABILITY ******
connect-src 'self' *.my-domain.com my-domain.com;
default-src 'self';
script-src 'self' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ 'unsafe-inline';
style-src 'self' https://fonts.googleapis.com 'unsafe-inline';
font-src 'self' https://fonts.gstatic.com 'unsafe-inline';
frame-src https://www.google.com/recaptcha/ https://recaptcha.google.com/recaptcha/;"
/>
<add name="Referrer-Policy" value="strict-origin" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
对于前门,也是类似的问题。我可以添加自定义标头,但不能添加随机值。
预先感谢您提供的任何帮助/见解。
是否可以将逻辑应用程序放在 Front Door 和应用程序服务之间的中间,以生成标头的随机值? Front Door 可以使用逻辑应用程序作为源,逻辑应用程序将调用应用程序服务。 您可以传递逻辑应用程序中的所有标头,但修改随机数标头。