vimeo 域隐私和 <iframe> 的安全性

Edu*_*rox 7 iframe vimeo vimeo-api

在我们的应用程序中,用户可以订阅以访问“优质视频”。我们使用 vimeo 托管所有使用该域保护设置的视频,该设置只允许我们的视频嵌入到特定域中。

我们的情况:
如果一个不怀好意的用户订阅了一个月并使用该访问权限使用 Firebug、chrome inspect 或其他类似工具获取所有私人视频 ID(大约 1500),他可以在我们的登录页面上手动插入一个 iframe并且由于它在vimeo允许的域中,因此私人视频将不受任何限制地播放。
利用被盗的 id,他可以创建一个插件,该插件可以在我们自己的网站上免费列出我们所有的私人视频:(
这是一个代码示例,有人可以使用它来播放我们域上的视频,只需使用 chrome inspect 插入即可:

<iframe src="https://player.vimeo.com/video/{any video ID including our domain protected ones}" width="640" height="640" frameborder="0" allowfullscreen=""></iframe>
Run Code Online (Sandbox Code Playgroud)

我的问题:
有没有办法避免或让某人更难这样做?
我们可以想到的一个可能的解决方案是创建另一个域以用作视频域(避免使用与登录相同的域),但无论如何都可以在 chrome 的网络选项卡上获取该新域。

PS:我不知道这是否相关,但我们正在使用 PhoneGap/Cordova 来开发应用程序。

Edu*_*rox 7

经过研究和 vimeo 支持的一些答案,我们找到了适合我们案例的解决方案。
由于如果人们可以访问您的视频,则无法阻止他们下载您的视频,因此我们将策略从使用域保护更改为直接视频链接/网址(您需要将您的 vimeo 帐户升级到 PRO 或 BUSINESS)。
当您获得直接的视频网址(如https://player.vimeo.com/external/...) 并在浏览器中打开它会将您重定向到临时 URL(来自 vimeo 的回答:“文件和下载链接都是 HTTP 302 重定向到实际视频文件资源。实际视频文件资源的位置每隔几个小时就会过期,因此请确保您始终使用我们提供的重定向链接。”)。然后我们可以在 html5 视频标签中使用这个临时 url 并播放我们的视频。

笔记:

  1. 如果用户窃取我们的网址,它只会工作几个小时,这样他就无法使用我们的网址建立包含我们视频的网站。

  2. 不幸的是,具有一定网络知识的人可以使用该直接视频链接轻松下载视频,但由于我们无法避免下载视频,所以这没什么大不了的。

  3. 我们需要获取临时 url 服务器端,因为我们不希望任何人访问原始直接 url(如https://player.vimeo.com/external/.. .)。


这是 C# 中的一个代码示例,它获取该临时 url(基于):

  var url = "https://player.vimeo.com/external/...";
  HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
  webRequest.AllowAutoRedirect = false;  // IMPORTANT
  webRequest.UserAgent = "youruseragent";
  webRequest.Timeout = 10000;           // timeout 10s

  // Get the response ...
  using(var webResponse = (HttpWebResponse)webRequest.GetResponse()) {
    // Now look to see if it's a redirect
    if((int)webResponse.StatusCode >= 300 && (int)webResponse.StatusCode <= 399) {
      string uriString = webResponse.Headers["Location"];
      System.Diagnostics.Debug.WriteLine("Redirect to " + uriString ?? "NULL");
    }
  }
Run Code Online (Sandbox Code Playgroud)