首页 > 解决方案 > AmazonAWS 保护 S3 Bucket 视频

问题描述

我以一种非常简单的方式使用 AWS S3 存储桶。

我使用此存储桶,因此与仅从网站的同一服务器调用视频相比,使用 HTML5 视频 ( <video></video>) 的播放更加优化并且不会滞后(这很荒谬)。

视频文件是加密的,但它们被设置为只读到公开。

现在,我担心的是,因为它们是公开的,人们可以从 S3 存储桶下载它们,而不是在网站上播放它们。

问题

有没有办法在远程网站的 HTML 视频上播放 S3 存储桶中的视频文件,但如果通过 S3 路径直接访问文件,将拒绝下载该文件?

如果有这方面的教程,我将不胜感激。如果这已经在 S3 文档中,我为懒惰道歉,请给我看链接。我还听说您可以将它们设置为私有权限,但它们仍然可以在远程服务器上播放(尽管我还没有做到这一点)。

干杯和非常感谢

标签: phpamazon-web-servicesvideoamazon-s3

解决方案


Bucket Policy 可以配置为限制对特定 HTTP Referrer 的访问

例如,如果网页在页面上包含图像,则对该对象的 HTTP 请求将包含referer. (我认为这也适用于视频。)

然而,这并不是很好的安全性,因为可以很容易地操纵 HTTP 请求以包含referer(例如,在网络爬虫中)。

更安全的方法是使用预签名 URL。这是一个特殊构造的 URL,它授予对私有 Amazon S3 对象的限时访问权限。

呈现网页时,您的应用程序将确定是否允许用户访问该对象。如果是这样,它将使用 AWS 凭证构建预签名 URL。然后可以将 URL 包含在标准 HTML 标记中(例如<img src='...'>)。在到期时间之前,用户将能够访问该对象。如果他们与其他人共享 URL(例如在推文中),其他人也将能够访问该对象,直到到期时间。

顺便说一句,Amazon CloudFront 还可以使用各种视频协议来提供视频内容。它还支持预签名的 URL(以及签名的 cookie)。


推荐阅读