应用内容安全策略后,Azure Swap不起作用



我刚刚在开发环境中将内容安全策略应用于我的Azure Web App,它运行良好。

我也可以将它上传到我在Azure上的临时站点,它在那里运行良好,策略得到了正确应用,然后由我的浏览器强制执行。然而,当我进行交换时,我会得到以下错误:

无法交换站点"MySite"的插槽,因为中的工作进程"暂存"插槽中止了预热请求。如果网站阻止HTTP请求的IP限制或URL重写规则。

这是我正在应用的策略(在我的web.config中定义)

<add name="Content-Security-Policy"
value="default-src     'none';
script-src      'self' https: 'unsafe-inline' 'unsafe-eval';
style-src       'self' https: 'unsafe-inline';
img-src         'self' https: 'unsafe-inline' data: blob:;
connect-src     'self' https:;       
font-src        'self' https:;
object-src      'none';
media-src       'self';
child-src       'self';
form-action     'self';
frame-ancestors 'none'"/>

问题出在哪里?

Azure不喜欢web.config中内容安全策略值中的回车。

如果您使用应用程序服务编辑器(可通过Azure门户获得)检查web.config,则您将看到回车已编码并转换为

&xD&xA;

创建以下无效CSP,这就是交换中断的原因:

默认src'none'&xD&xA;脚本src"self"https:"不安全内联"不安全评估"&xD&xA;style-src"self"https:"不安全内联"&xD&xA;img src"self"https:"unsafe-inline"数据:blob:&xD&xA;connect-src'self'https:&xD&xA;font src'self'https:&xD&xA;object src"none"&xD&xA;media src"self"&xD&xA;child-src'self'&xD&xA;形成行动"自我"&xD&xA ;帧祖先"无">

简而言之,我们需要在一行中输入我们的CSP,这降低了可读性,但Azure需要进行交换。

最新更新