Google cloud storage 如何使视频仅从特定域播放

Google cloud storage 如何使视频仅从特定域播放,google-cloud-storage,acl,access-control,flowplayer,wistia,Google Cloud Storage,Acl,Access Control,Flowplayer,Wistia,我提供订阅服务,用户每月支付9美元才能访问100%的视频。早些时候,我的视频上传到Witia上,它们具有域访问功能——因此,只有从我的域访问视频,它们才会播放。如果有人复制嵌入代码并试图访问它,视频将不会播放 我现在正在将视频迁移到谷歌云存储 当前设置如下所示 已经在谷歌创建了一个公共访问桶,并上传了所有视频 复制每个视频的公共访问mp4 URL并存储在数据库中。 当付费用户登录并访问视频时,URL将传递给播放视频的flowplayer。 发行 由于Google bucket具有公共访问权限,因

我提供订阅服务,用户每月支付9美元才能访问100%的视频。早些时候,我的视频上传到Witia上,它们具有域访问功能——因此,只有从我的域访问视频,它们才会播放。如果有人复制嵌入代码并试图访问它,视频将不会播放

我现在正在将视频迁移到谷歌云存储

当前设置如下所示

已经在谷歌创建了一个公共访问桶,并上传了所有视频 复制每个视频的公共访问mp4 URL并存储在数据库中。 当付费用户登录并访问视频时,URL将传递给播放视频的flowplayer。 发行

由于Google bucket具有公共访问权限,因此mp4 URL可以轻松访问和共享。用户可以在第一个月支付9美元,然后查看页面来源,获得mp4文件的URL,下载所有100个视频,并可以免费分发或上传到youtube上

可能的解决办法

谷歌存储可以做些什么来防止这种情况。对于我前面的问题,建议使用签名URL,但它们不能解决此问题。是否有其他ACL或CORS选项可以确保视频的安全,使其仅在我的网站上播放,或提供其他形式的预防

可以通过编程来完成某些事情。我的网站是建立在PHP上的。可以通过源代码屏蔽URL或使其难以访问

可以通过flowplayer完成一些事情。我相信他们也有付费版本。他们是否提供任何形式的访问安全

我意识到,如果人们愿意,他们可以找到许多工具来下载视频-我只想做的是不显示直接链接到mp4文件在查看源代码


谢谢

如果您将视频公开,并通过其公共访问URL提供视频,则无法限制不再付费用户的访问,同时仍允许付费用户访问。发件人:

注意:当一个对象被公开共享时,任何知道该对象URI的用户都可以访问该对象,只要该对象是公开的 公众

因此,要实现您的目标,您需要:

停止公开你的视频。使用任何最适合您的情况。你是个不错的选择。您可以使用自己所需的访问逻辑,例如检查域,以调整访问条件

永远不要发布公共访问URL。使用与上述相同的访问控制选项。签名URL是有效的,但只有在您使用它们时才有效,而不是像现在这样使用公共访问URL。注意:不共享公共URL并不能确保它们不会被意外或故意猜测和泄漏,因此可能会绕过您现有的任何访问控制。最好放弃共享公共访问。如果您担心的话,签名URL也可以用于上传


拥有自己的访问控制方法并不是不可能的,我想这就是你在第2页暗示的,或者第三方的方法。但上述说明适用于这两种情况——如果视频是公开共享的,则可以绕过它们。那何必麻烦呢?

嗨,丹-谢谢你的详细帖子。不,我的想法不是让它们公开——我目前制作的视频都在Witia上,提供域名访问。我已经将一些视频移到谷歌存储并进行了实验。我一直在玩签名的URL,但我只能通过一个URL激活的时间限制。但这并没有帮助,因为即使我将URL保持活动状态10分钟egs,也足以让任何人查看源代码、复制URL并下载它。您提到了添加诸如检查域之类的逻辑-您能解释一下如何做到这一点吗。感谢您的时间。我的意思是在生成签名URL时使用域逻辑,每个视频播放请求一个,即使是同一个视频。但事实上,一旦签名的URL退出,任何拥有它的人都可以访问该对象,直到链接过期。谢谢Dan-我正在将签名的URL传递给flowplayer。如果我把过期时间保持得太低,那么视频就不会得到缓冲——如果我把过期时间保持得太高,那么它就有足够的时间下载。试图找到正确的平衡。谢谢我正面临着与你Gubloo完全相同的问题,你最终找到了这个问题的解决方案吗?除了签名的url之外,我认为你可以设置cors只允许从特定域获取