【问题标题】:Chrome with CSP img-src * still blocks images带有 CSP img-src * 的 Chrome 仍会阻止图像
【发布时间】:2015-12-04 19:51:55
【问题描述】:

我的 webapp 有一个内容安全策略,将 img-src 设置为 *(从任何地方加载图像),但 Chrome 仍会阻止某些图像加载...

拒绝加载图片 '数据:图像/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==' 因为它违反了以下内容安全政策指令: “img-src *”。 lg@ js?libraries=places,geometry&v=3&callback=async_req_1:84(匿名 功能) @ js?libraries=places,geometry&v=3&callback=async_req_1:119google.maps.Load @ js?libraries=places,geometry&v=3&callback=async_req_1:21(匿名 功能) @ js?libraries=places,geometry&v=3&callback=async_req_1:118(匿名 功能) @ js?libraries=places,geometry&v=3&callback=async_req_1:119

如果我在指令中包含“数据:”,则错误不会显示在控制台中。

img-src * 数据:;

但是,这不是一个有效的指令。是否有一个 img-src 有效的 CSP 值可以满足 Chrome 或者这可能是一个 Chrome 错误?我无法在可访问的错误列表中找到任何直接匹配项。我推测这可能与嵌入在 SVG 文件中的图像有关。 Firefox 和 Safari 不会出现这种行为。

【问题讨论】:

  • “无效”是什么意思?
  • 根据content-security-policy.com:“多个源列表值可以用空格分隔,但 * 和 none 应该是唯一值。”这表明同时列出 '*' 和 'data:' 是无效的。

标签: google-chrome content-security-policy


【解决方案1】:

content-security-policy.com 是错误的。见w3.org/TR/CSP2/#source-list-guid-matching

如上所述,引用特定部分的特殊 URL 方案 独特的内容,例如“data:”、“blob:”和“filesystem:”是 从匹配 * 的政策中排除,并且必须明确列出。

* 也不包括“unsafe-inline”或“unsafe-eval”。

【讨论】:

  • 太好了,规范规则!我将向 CSP 添加 'img-src: * data:'。 (顺序重要吗?)我正在部署到桌面和移动浏览器(有些带有嵌入式网络视图)。我会重新测试,但我记得其中一个平台,可能是较旧的 Android,拒绝了这种格式。我想知道规范是否在这方面有所发展,也许一些较旧的浏览器反映了较旧的标准。如果我找到例子,我会回到这条线索。谢谢你的回答,奥利奥沙克!
  • 不,顺序无关紧要。较旧的 android 浏览器(使用 x-webkit-csp 时)有各种各样的问题。我还没有看到任何内容安全策略(但这并不意味着它们不存在)。感谢你走这条路,不要放弃!我是来帮忙的(@ndm 和 @seeesspee 在推特上)。
猜你喜欢
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多