【问题标题】:Security with vimeo domain privacy and <iframe>vimeo 域隐私和 <iframe> 的安全性
【发布时间】:2019-01-05 03:36:58
【问题描述】:

在我们的应用程序中,用户可以订阅以访问“优质视频”。我们使用 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>

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

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

【问题讨论】:

    标签: iframe vimeo vimeo-api


    【解决方案1】:

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

    备注:

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

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

      李>
    3. 我们需要获取服务器端的临时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");
        }
      }
    


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多