9

我在问一个与这些有点相关的问题:

提供视频的安全方式

安全的视频流

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

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

  • 机器人/蜘蛛从找到这些视频并下载它
  • 供人们简单地查看源代码、复制视频的 url 并与其他人分享

我怀疑很多人会尝试入侵该网站以窃取视频。

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

4

3 回答 3

19

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

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

我已经想到了下面列出的几种方法,您可以采取哪些措施使学生/观众不值得下载视频。

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

下面将更详细地讨论每一个。

隐藏 URL

您可以像这样隐藏 URL:

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

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

这可以通过这样一种方式来实现,即它们足够晦涩,但对于观众来说仍然是可收藏的和用户友好的。

如果您想更进一步,您可以将视频分成几部分 - 这在定制部分中进行了讨论。

经常更换网址

使用一些代码,您可以将视频设置为每周日晚上 11.59 点更改您所在时区的 URL。但是,您链接到的任何页面都必须自动或手动更新,这本身就是一个麻烦(您如何测试代码/如果它跌倒而您没有意识到/类似的事情)。

即使您完成了所有这些工作,任何为该页面添加书签的用户都会遭受链接腐烂的困扰。

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

使用一些时髦的服务器端代码,您可以限制视频可以下载到 IP 地址(或根据用户情况,IP 的子网)的次数。

这不是我的强项,但您可以查看有关动态 IP 限制的文章。以下是网站的摘录

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

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

也有可能对Drupal 做同样的事情。

让他们在定制的“定制服务”视频播放器中观看

您可以加倍努力并制作自己的视频管理系统(看起来像您一样),并从您自己的服务器上提供视频(这就是我所说的定制服务),但是一些尝试过的程序是像索尼的 CD 管理软件那样有缺陷,或者正在惩罚诚实的用户,比如 Apple iTunes 的 FairPlay DRM 软件

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

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

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 视频。

您必须记住,快速的 Google 搜索显示 大量 在线网站允许您从这些视频托管网站下载视频。甚至还有FirefoxChrome的浏览器插件。

如果您的企业依赖您的视频来实现盈利,并且您想更进一步,那么付费流媒体服务专门从事内容分发,并具有适当的访问权限管理和内容保护。其中一项服务是Brightcove。Brightcove 的摘录如下:

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

... 和 ...

保护您的宝贵内容

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

细粒度的访问控制

准确确定您的内容显示的时间和地点,以遵守内容许可限制、全球发布计划或安全的防火墙后交付。用户友好的图形界面允许您按日期、域、地理、播放器或 IP 地址限制访问。为了获得更大的控制,通过 IP 地址范围限制对敏感材料的访问,并确保内容只能从经批准的网络中访问。

在一天结束时...

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

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

如果你有无限的资源,你可以结合上面列出的所有技术,让它不值得任何人花时间。但是,在您付出所有努力之后,观众总是可以设置许多屏幕捕获程序之一,以将所有视频录制到他们的硬盘驱动器上。

这取决于您,以及您对视频的警惕程度。请记住,您花费的精力和时间使翻录视频变得更加困难,这与普通付费客户获取和使用内容的难度成正比。

更多信息:

于 2013-06-18T01:48:10.780 回答
3

也许有点太晚了,但我把它放在这里是为了帮助其他人。

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

我注意到许多网站(包括linkedin、pluralsight 和许多其他网站)使用的一种方法是使用哈希保护授权信息的资源url。此类令牌包含足够的信息,用于识别要提供的内容以及 URL 有效的时间范围。

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

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

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

现在,创建一个包含所有上述信息的 url,不包括私钥。您的最终网址将是这样的:

example.com/video?validfrom=1566831998&validto=1566839198&path=1234.mp4k&hash=HhgcWmRViYeQLn4AZoQvkVXotPU

现在,每当对路径 /video 的视频发出请求时,您都会从 url 中获取所有参数(不包括哈希),并像之前一样从参数和您的私钥中创建一个哈希命令。如果您刚刚生成的散列与 URL 中包含的散列匹配,则可以说该 url 是有效且未经调整的。JWT 身份验证中使用了相同的技术,并且非常有效。因为您不必在任何数据库中存储或检索信息。这使得它非常快速且易于实施。

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

于 2019-08-26T16:46:09.883 回答
0

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

于 2013-06-17T17:22:59.293 回答