【问题标题】:Content security policy blocking remote CSS background image内容安全策略阻止远程 CSS 背景图像
【发布时间】:2017-08-18 11:00:48
【问题描述】:

我的 CSP 正在阻止从远程服务器加载的背景图像并显示消息

内容安全政策:页面的设置阻止加载 自己的资源(“default-src * https://xxxxx.com”)。来源: 背景图片:url('https://xxxxx....

这是我的 CSP:

<meta http-equiv="Content-Security-Policy" content="default-src * https://xxxxx.com; script-src * 'unsafe-eval' 'unsafe-inline'; img-src 'self' data:">

...xxxxx 显然是我的域名。

我认为它不喜欢url(...,但CSP spec 似乎没有考虑url() 一个方案,所以我不知道该怎么做。有人知道吗?

[更新]

在@sideshowbarker 的评论之后,我应该指出这个调用来自内联style 属性(不是标签)。

【问题讨论】:

  • 此外,* 不应该允许一切吗?
  • 尝试使用“* data:”的 img-src 更改 Content-Security-Policy 标头
  • 同样的结果。有趣的是错误消息表明它不是从img-src 读取,而是从备用default-src(已经有通配符)读取。
  • 这真的很痛苦,如果之前的评论不起作用,我不确定该怎么做。祝你好运。
  • 您是否尝试过使用style-src?该消息引用的来源来自内联 style 元素,对吧?

标签: css content-security-policy


【解决方案1】:

该 CSP 违规消息表明您具有内联 CSS 样式内容,因此您必须将该 CSS 内容移动到单独的文件(并使用 link 元素来引用它)或者您必须指定 'unsafe-inline' — 例如,通过在您的策略中添加 style-src 指令:

<meta http-equiv="Content-Security-Policy"
  content="default-src * https://xxxxx.com;
  script-src * 'unsafe-eval' 'unsafe-inline';
  style-src 'self' 'unsafe-inline';
  img-src 'self' https://xxxxx.com data:">

原因是,问题中引用的 CSP 违规消息并不是说该 CSS 样式内容中的图像是问题 - 它只是说您有一些内联样式内容,句号。

就 CSP 而言,内联样式内容是什么并不重要 — 只是您现有的 CSP 策略不允许任何内联样式内容;您现有的策略只允许内联脚本,因为 script-src 是您指定 'unsafe-inline' 的唯一指令。

因此,如果您要保留该内联样式内容,则必须使用 'unsafe-inline' 来允许它。

更新:基于下面的cmets,在这种情况下,似乎一旦为style-src添加了'unsafe-inline',还需要为img-src添加https://xxxxx.com


尽管如此,一旦您最终为样式内容和脚本指定了 'unsafe-inline',您似乎可能需要开始考虑是否要在以下位置指定 CSP 策略全部——因为允许所有内容内联完全违背了制定 CSP 策略的目的。

如果您的目标是降低 XSS 风险,您似乎应该考虑将所有内联样式/脚本内容移动到单独的文件中,并使用 &lt;script src&gt;link 来引用这些...

【讨论】:

  • +1 用于发现我现有的 'unsaife-inline 仅适用于 JS,而不适用于 CSS。但是,添加 style-src 指令现在会导致:“内容安全策略:页面的设置阻止在 xxxxx.com/my-img.png ("img-src 192.168.*.* data:") 处加载资源。”所以似乎将判断推迟到img-src,而不是style-src
  • 哦,我同意 re:内联样式/JS - 这并不理想,但这是我目前必须使用的。这是一个框架。
  • 好吧,从那条消息看来,我猜您还需要添加https://xxxxx.com 作为img-src 的来源。我已经更新了答案以反映这一点
猜你喜欢
  • 1970-01-01
  • 2021-05-30
  • 2021-08-21
  • 2021-09-19
  • 1970-01-01
  • 2021-06-28
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多