Angular Azure 应用服务内容安全策略随机数

问题描述 投票:0回答:1

我在 ServerFault 上发布了同样的问题,但那里似乎没有太多流量,所以我想我也可以在这里发布它。

我正在尝试为我们的 CSP 标头策略实现一个随机数。我想从 script-src 策略中删除“不安全内联”,因为 Angular 现在支持为其内联脚本绑定随机数,但我很难弄清楚如何使用初始内容传递随机数Windows 上的响应标头(也完全有可能我完全误解了这个过程)。

我们使用 Azure 应用服务进行托管,并使用 Azure 前门作为防火墙/负载均衡器。我觉得这里有两种可能的选择:

  1. 在请求 Angular 应用程序的 js 时,使用 IIS 配置添加随机数标头。
  2. 在前门上设置标头以返回随机数值。

根据我的尝试,我没有找到在 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>

对于前门,也是类似的问题。我可以添加自定义标头,但不能添加随机值。

预先感谢您提供的任何帮助/见解。

angular azure azure-web-app-service content-security-policy azure-front-door
1个回答
0
投票

是否可以将逻辑应用程序放在 Front Door 和应用程序服务之间的中间,以生成标头的随机值? Front Door 可以使用逻辑应用程序作为源,逻辑应用程序将调用应用程序服务。 您可以传递逻辑应用程序中的所有标头,但修改随机数标头。

© www.soinside.com 2019 - 2024. All rights reserved.