5

我希望有一个简单的答案。

我正在使用“fancybox”工具在页面上嵌入来自 Vimeo 的视频。Fancybox 本质上创建了一个 iFrame 并嵌入了 Vimeo 播放器。它适用于所有浏览器——直到我打开内容安全策略。然后 ID 工作(因为它没有实现 CSP),但 Chrome 和 Firefox 只是挂起显示的“正在加载”图像。

我试过这个 CSP:

<add header="Content-Security-Policy" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />
<add header="X-Content-Security-Policy" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />
<add header="X-WebKit-CSP" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />

当然,我的想法是我允许媒体和我的 iframe 都来自 vimeo。但它不起作用。有谁知道为什么?

更新:我删除了仅显示视频的页面的 CSP,并使用 Google 的开发人员工具查看了内容。我发现 Vimeo 从其他 Vimeo 子域、vimeocdn.com、conviva.com、lphbs.com 甚至亚马逊的 aws 中引入了大量其他内容。所以 - 如果您使用 Vimeo(和 YouTube?),您要么有很长的外部站点列表,要么只是不使用 CSP?任何见解将不胜感激!

4

1 回答 1

2

是的,最好的选择是添加一长串主机,但不要删除 CSP!

根据您的政策,删除 CSP 意味着以下内容:

  • 您允许内联脚本以及对 eval 的危险调用 - 实质上为反射/存储的 XSS 开辟了另一个机会
  • 框架可以从任何地方注入
  • 图像、样式、小程序等可以从任何地方加载。

通常您需要允许内联脚本/评估,但内容安全策略仍然非常有效。

您还可以将标头的仅报告形式与 report-uri 结合使用,以收集您需要列入白名单的可能地点的列表。

于 2012-12-12T23:28:29.167 回答