应用CSP当Safari的默认媒体控件被封锁

我最近遇到了一个意想不到的路障试图部署内容安全,策略一个网站,所提供的HTML本地媒体的控制依赖于(CSP)<音频><视频>在Safari中的元素。默认的浏览器提供的多媒体控制是我的目的不够好,他们提供了一个平台的本地用户体验,给所有用户。令我惊讶,我注意到有上有严格的内容安全策略的网页在Safari中没有可用的播放控制按钮。

内容安全,策略是一个HTTP响应标头,服务器可以发送指示,而不是它们的起源默认安全策略更严格。只允许一个页面来显示影像和播放媒体从自己的出身,你会送这样的报头(破多行以便于阅读):

内容安全-政策:默认-SRC '无';媒体-SRC '自我';IMG-SRC '自我'

上面的例子中的块的媒体和其他来源/域,甚至完全块样式表和脚本图片来自在所有运行。

Safari浏览器11(为MacOS和iOS 11)和Safari 12(适用于MacOS和iOS 12),用于默认媒体控制按钮SVG格式加载在数据URI BLOB提供的图标。Safari浏览器没有为这些图形处理的内容安全策略时,从浏览器本身的采购任何异常。

其结果是,Safari浏览器块自己的默认媒体的控制,并最终没有为他们任何可见的图标。Safari浏览器也发送一个内容安全策略违规报告,如果内容安全策略配置为如此。应该持有的图标,默认半透明黑色工具栏是可见的,并为媒体控制的点击区域获得小的图标时加载失败。

这显然是在Safari中的错误。浏览器本身的图形总是信任特别是在这方面。默认的媒体的控制非常信任,将不会在其他Web浏览器包括Firefox,谷歌Chrome和Safari 10岁及以上的相同内容的安全策略阻止。您可以按照yabo亚博体育下载WebKit的BUG#191782如果你有兴趣在更新关于这个问题。

你不能使用随机数源要么哈希代码专门只允许资产Safari浏览器需要或者。唯一的变通办法,让你继续使用默认的控制音频和视频是通过改变政策来降低页面的安全级别:

内容安全-政策:默认-SRC '无';媒体-SRC '自我';IMG-SRC '自我'数据:

这使得从任何数据URI已不知何故到你的页面中的任何图像资源的加载。这可能是一个安全风险,因为数据URI被认为是等同于不安全的内联资源。这是远非完美,但它仍然是一个更好的地方是比没有在所有的内容安全策略。

另一个解决办法是只硬着头皮设计并提供的,而不是依靠Safari的默认媒体控制和图形媒体控制。这可能是很多不必要的额外工作时的默认媒体控件会就好了工作。

这个问题是一个很好的提醒,一个内容安全策略,需要持续监测的新问题和新浏览器的bug可以打破你的网站的核心功能。

来源