【问题标题】:Content-Security-Policy does not work although I use a wildcard尽管我使用通配符,但 Content-Security-Policy 不起作用
【发布时间】:2018-08-23 05:58:08
【问题描述】:

在我的 Meteor/Cordova 项目中,用户可以上传图片。然后将此图像上传到云服务。但在此之前,我已经想向用户显示上传的图像。立即地!所以我把 cdvfile-Url 设置为<img>s "src"。例如:

<img src="cdvfile://localhost/root/storage/emulated/0/x/y.jpg" />

我的 CSP 元标记如下所示:

<meta http-equiv="Content-Security-Policy" content="default-src *; img-src *">

不幸的是,这就是我得到的结果,虽然元标记不是很严格:

拒绝加载图片 'cdvfile://localhost/root/storage/emulated/0/x/y.jpg' 因为它 违反以下内容安全策略指令:“img-src *”。

我尝试了 CSP 元标记的大量变体,但都没有成功。我尝试过使用和不使用cordova-plugin-whitelist。谁有线索可以帮忙?

谢谢

【问题讨论】:

  • 在内容属性的星号前添加斜杠会发生什么?
  • 不起作用。它只会导致更多错误:“内容安全策略指令 'img-src' 的源列表包含无效源:'/*'。它将被忽略。”

标签: cordova meteor cordova-plugins content-security-policy


【解决方案1】:

您需要在策略中明确指定cdvfile:,如下所示:

<meta http-equiv="Content-Security-Policy"
    content="default-src *; img-src * cdvfile:">

原因在于,对于requirements in the CSP spec* 通配符仅匹配具有“网络方案”的 URL,其定义为 “a scheme that is "ftp" or an HTTP(S) scheme”

因此,一般而言,只要您想制定 CSP 策略,允许其 URL 的协议部分不是 httpshttpftp 的资源,那么您必须在您的政策。

【讨论】:

  • 我之前尝试过,但不幸的是,这会导致此错误消息:拒绝加载图像 'cdvfile://localhost/root/storage/emulated/0/DCIM/Camera/IMG_20180315_150821.jpg ' 因为它违反了以下内容安全策略指令:“default-src * gap: data: blob: 'unsafe-inline' 'unsafe-eval' ws: wss:”。请注意,'img-src' 没有显式设置,所以 'default-src' 用作后备。
  • 顺便说一句:我不得不将您建议的元标记更改为: 否则,我的脚本根本不会运行
  • 这不是“我的”提议的元标记——它是问题中的元标记,只是原样添加 cdvfile: 到 img-src 指令,这对脚本是否跑与不跑。因此,您的意思是,除非您向其中添加“unsafe-inline”,否则问题中元标记中的 CSP 策略实际上不起作用。这是一个与导致问题中引用的错误消息的问题完全不同的问题。实际上,该错误的修复确实是该答案所说的:您必须将 cdvfile: 添加到 img-src 指令。
  • 至于错误 “因为它违反了以下内容安全策略指令:“default-src * gap: data: blob: 'unsafe-inline' 'unsafe-eval' ws: wss:”。请注意,'img-src' 没有显式设置,因此 'default-src' 用作后备。” 这不是由将 cdvfile: 添加到 img-src 指令引起的。如消息所示,这表明您使用的策略甚至根本没有 img-src 指令。但是答案中的策略有一个 img-src 指令。因此,如果您设法将 img-src 指令与 cdvfile: 一起放入您的实际策略中,它实际上真的会起作用。
  • 我能想到的唯一方法是你会导致 “因为它违反了以下内容安全策略指令:“default-src * gap: data: blob: 'unsafe-inline' 'unsafe-eval' ws: wss:" 消息通过使用 Content-Security-Policy HTTP 标头提供您的文档,该标头具有与问题中显示的元元素不同的值,或者通过放入文档中具有不同策略的附加元元素。无论如何,该消息永远不会由此处答案中显示的政策引起。
猜你喜欢
  • 2023-03-19
  • 2013-05-03
  • 2019-09-05
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 2021-12-20
相关资源
最近更新 更多