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

标签 iframe vimeo vimeo-api

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

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

这是一个代码示例,有人可以通过使用 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>

我的问题:
有没有办法避免或使某人更难做到这一点?

我们可以想到的一个可能的解决方案是创建另一个域以用作视频的域(避免使用与登录相同的域),但无论如何都可以在 chrome 的网络选项卡上获取该新域。

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

最佳答案

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

笔记:

  • 如果用户窃取我们的网址,它只会工作几个小时,这样他就无法使用我们的网址建立一个包含我们视频的网站。
  • 不幸的是,具有一定网络知识的人可以使用该直接视频链接轻松下载视频,但由于我们无法避免无论如何都要下载视频,这没什么大不了的。
  • 我们需要获取服务器端的临时 url,因为我们不希望任何人访问原始的直接 url(如 https://player.vimeo.com/external/.. 。)。


  • 这是获取该临时 url 的 c# 代码示例(基于 this ):
      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");
        }
      }
    

    关于iframe - vimeo 域隐私和 &lt;iframe&gt; 的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567649/

    相关文章:

    swift - 将视频(和属性)上传到 vimeo 的 RESTful 机制

    vimeo - 通过 SSL 获取 vimeo 缩略图

    ios - Vimeo OAuth2 授权

    javascript - Firefox 不在 iframe 中加载本地文件

    java - 如何使用 scribe 在 vi​​meo api 上获取 Ticket_id

    ios - 如何运行 vimeo 链接

    vimeo - 如何链接到 vimeo 视频的高清版本

    javascript - 在每次页面加载时滚动条到 iFrame 容器 Div 的顶部?

    javascript - 打印由 google docviewer 通过 javascript 在 iframe 中打开的 pdf

    javascript - 从 iframe 将 javascript 函数注入(inject)父窗口