如何安全地在网站上提供视频

时间:2012-06-27 17:59:13

标签: security video download streaming video-streaming

我问的问题与这些问题有些相关:

Secure way of serving videos

secure streaming of videos

但是,没有人提供与我的情况相关的答案。

我的情况如下: 我正在构建一个非常简单的学习管理系统。如果学生已经付费,他们可以访问视频课程。我想阻止:

  • bots / spiders发现这些视频并下载
  • 让人们只需查看来源,复制视频的网址,并与其他人分享

我很怀疑人们会试图破解网站来窃取视频。

保护这些视频不被分享的最佳方法是什么?我必须将视频存储在我的网络服务器上吗?我可以利用youtube或vimeo等视频平台吗?

3 个答案:

答案 0 :(得分:12)

长话短说,没有简单的解决方案。

我会直截了当地说,如果有办法阻止人们下载视频,那么每个视频网站都会这样做。

我已经想到了下面列出的一些方法,你可以采取哪些措施让学生/观众无法下载视频。

  • 隐藏网址
  • 经常更改网址
  • 限制每个IP地址/子网的下载次数
  • 让他们在定制的"定制服务"视频播放器
  • 使用已有的视频流服务

下面将详细讨论每一项。

遮盖网址

您可能会像以下一样模糊网址:

http://mylearningmanagementsystem.com.au/e12d8cd38f00f204e9801998ecc8427e/video.flv

您可以计算文件本身名称的哈希值(或者盐和哈希值,以上只是一个示例)并在URL中使用它。

这可以通过这样的方式来实现,即它们可以模糊不清,但仍然可以为收视者添加书签和用户友好。

如果您想更进一步,可以将视频分解为多个部分 - 这将在自定义构建部分中讨论。

经常更改网址

使用某些代码,您可以将视频设置为每周日晚上11点59分为您的时区更改网址。但是,您链接到的任何页面都必须自动或手动更新,这本身就很麻烦(如何测试代码/如果它丢失了什么并且您没有意识到/类似的东西)。

即使您完成了所有工作,任何为该网页添加书签的用户都会受到link rot的影响。

限制每个IP地址/子网的下载次数

使用一些时髦的服务器端代码,您可以限制视频可以下载到IP地址的次数(或者取决于用户案例,IP的子网)。

这不是我的强项,但您可以查看Dynamic IP Restrictions上的文章。以下是网站摘录

  

根据以下任一条件动态阻止来自IP地址的请求:

     
      
  • 并发请求数。
  •   
  • 一段时间内的请求数量。
  •   

还有doing the same with Drupal的可能性。

让他们在定制的"定制服务"视频播放器

你可以加倍努力,建立自己的视频管理系统(看起来像你),并从你自己的服务器(这就是我所说的定制服务)提供视频,但有一些程序有尝试了此were flawed like Sony's CD management softwarewere punishing honest users, like Apple iTunes' FairPlay DRM software

如果您最终走的是为用户提供程序/网络服务来观看视频并将其限制为密码/加密密钥的路线,那么您可能会惹恼那些善意为您的内容付费的客户。这基本上是所有版权保护系统都试图完全失败的原因,因为要么程序没有得到足够好的保护,要么人们只是停止使用它,因为它很难处理。

当您向用户提供视频时,您可以将它们拆分并按章节分开,因为第一章是一个视频,第二个是另一个视频,等等(如下所示):

http://mylearningmanagementsystem.com.au/video_title/chapter_01/video.flv
http://mylearningmanagementsystem.com.au/video_title/chapter_02/video.flv
http://mylearningmanagementsystem.com.au/video_title/chapter_03/video.flv

...你可以将它与第一部分中的哈希思想结合起来(隐藏URL):

http://mylearningmanagementsystem.com.au/e12d8cd38f00f204/8fd3611c40e74c3d/video.flv
http://mylearningmanagementsystem.com.au/e12d8cd38f00f204/92d7f54d09c80436/video.flv
http://mylearningmanagementsystem.com.au/e12d8cd38f00f204/27bd98792bea3103/video.flv

这可能有它的缺点:

  • 在开始时暂停视频以便加载的低互联网用户将遇到问题(现在问题不太常见,因为互联网现在更快更容易访问)
  • 如果缺少一个视频,整个视频将无法播放
  • 您将如何管理每个链接?每个视频名称是否具有相同的哈希值或不同的哈希值?
  • 你必须手动分解每个视频吗?

这里的关键点是,这确实为你做了很多不必要的工作。下一个选择是使用已经可用的视频流服务。

使用已有的视频流服务

有很多选项可用来托管和分享您的视频。 YouTubeVimeo是其中两个选项。我会解释为什么我更喜欢后者。

  1. 密码保护

    如果您只想与特定数量的付费用户分享视频,则可以使用Vimeo上的密码保护您的视频。 AFAIK,YouTube不提供此服务 - 它只允许您选择成员观看视频。

    不仅如此,您还可以将一堆视频添加到相册(在Vimeo中),并对相册进行密码保护,因此您只需更改相册的密码。

    请注意,您可能会遇到更多支持消息,例如"但这是当前的密码还是上周的密码?"

  2. 设置嵌入设置

    您可以将视频无法嵌入任何页面,这样用户就必须直接转到Vimeo,输入密码(如果您在上面设置了密码),并在网络浏览器中查看。 AFAIK,您可以嵌入YouTube中可以查看的视频。

  3. 您必须记住,Google快速搜索显示there are heaps of online sites允许您从这些视频托管网站下载视频。甚至还有FirefoxChrome的浏览器插件。

    如果您的商家依赖于您的视频用于货币化目的,并且您希望更进一步,那么 付费流媒体服务专门从事内容分发,具有适当的访问权限管理和内容保护。其中一项服务是Brightcove。 Brightcove摘录如下:

      

    Brightcove Video Cloud可以安全地提供最高质量的点播和实时视频体验,无论身在何处,都能吸引观众。我们简化了向网络,移动和联网电视中日益复杂的设备和标准生态系统的交付

    ......和......

      

    保护您的宝贵内容

         

    确保您的视频安全。使用RTMPe流加密和SWF验证可防止视频流翻录和内容被盗,并确保您的视频流仅在授权播放器中播放。

         

    细粒度访问控制

         

    精确确定您的内容的显示时间和位置,以符合内容许可限制,全球发布推出计划或安全的防火墙传递。用户友好的图形界面允许您按日期,域,地理位置,播放器或IP地址限制访问。为了更好地控制,可以通过IP地址范围限制对敏感材料的访问,并确保只能从经批准的网络中访问内容。

    在一天结束时......

    如果你可以查看它,你可以下载它,无论你多么模糊它。

    如果有办法阻止人们下载视频,那么每个视频网站都会这样做。

    如果您拥有无限的资源,您可以结合上面列出的所有技术,使其不值得任何人花时间。但是,经过您的努力,观众可以随时设置许多屏幕捕获程序中的一个,将所有视频录制到硬盘上。

    这取决于您,以及您希望对视频保持警惕。请记住,您花费更多时间来翻录视频的努力和时间与使常规付费客户更难获取和使用内容成比例。

    更多信息:

答案 1 :(得分:1)

也许为时已晚,但我将其放在此处以帮助他人。

正如其他人所说,一旦内容到达某人的计算机,就无法对其进行保护。但是我们可以通过设置一些障碍来防止内容的不受控制的共享。

我注意到许多网站(包括linkedin,复数形式以及许多其他网站)的一种这样的方法是资源URL,其中的授权信息由哈希来保护。这样的令牌包含足够的信息以标识要提供的内容以及该URL有效的时间范围。

假设您要保护的视频为: example.com/videos/1234.mp4 这是一个示例,说明如何在第一次请求资源时(在验证用户身份并完成其他验证之后)生成令牌:

active=1

现在,使用除私钥之外的所有上述信息创建一个URL。您的最终到达网址将是这样的:

validFrom = unixTimestamp
validTo = unixTimestamp
video = 1234.mp4
privateKey = yourSecretKey

token = HASH(validFrom.validTo.videoUrl.privateKey)

现在,每当在/ video路径上请求视频请求时,您都将从url中获取所有参数(不包括哈希值),并像以前从参数和私钥中创建哈希一样以相同的顺序。如果您刚生成的哈希值与URL中包含的哈希值匹配,则可以说该URL是有效的且未配置。在JWT身份验证中使用了相同的技术,并且确实有效。由于您不必在任何数据库之间存储或检索信息。这使得它非常容易实现。

验证令牌后,您可以将FileStream返回到URL中请求的媒体。

答案 2 :(得分:0)

如果它是一个小而不太动态的组,那么youtube或vimeo可能是一个可能的选择。但它不具备可扩展性。 如果您有动态受众,成员可以在不同时间加入和离开,那么您需要在自己的服务器上加密视频。 现在最大的挑战是密钥分配。您需要拥有密钥方案,以便每个用户都有一个唯一密钥,但用于加密视频的密钥是相同的。 这是一种可能的方法:https://sparrow.ece.cmu.edu/group/pub/old-pubs/elk.pdf 您可能想要查看的其他算法有:MARKS,LKH等。