【问题标题】:How to store videos for password protected site privately?如何私下存储受密码保护的网站的视频?
【发布时间】:2015-08-10 00:27:48
【问题描述】:

我正在创建一个网站,向少数人展示我的一些视频。这是一个受密码保护的网站,只有在您的浏览器中存储了正确的 cookie 时才能使用。如果我只是将视频放在一个目录中,知道查找文件的人将能够猜出 url。我怎样才能防止这种情况发生?

【问题讨论】:

  • 你使用的是什么网络服务器
  • 您使用什么后端技术?这大大改变了答案。
  • 我正在使用节点服务器。最好使用 Meteor 框架

标签: security web


【解决方案1】:

没有万无一失的方法可以做到这一点。如果视频被发送到他们的计算机,他们可以复制它。不过,你可以让它变得更不方便。

  1. 流式传输视频而不是提供下载
  2. 在视频 URL 中添加一些用户特定的信息,对其进行 HMAC,并在启动流时检查其有效性

例如:

视频网址:http://example.com/streams/99?username=alice&ip=6.6.6.6&validUntil=1439167206&hmac=fe1373c0150a5053f8cdb135317ee889a9699d06

validUntil 可能只是未来几秒钟的时间。足够长的时间让浏览器解析响应并连接到您的流媒体服务器。

然后在您的流媒体服务器上,确保用户以alice 登录,她的IP 是6.6.6.6,并且当前的UTC 时间戳在validUntil 之前,然后检查这些值是否被篡改使用 HMAC。

AWS 通过Cloudfront 支持这种事情

【讨论】:

    【解决方案2】:

    简而言之,您不能让网络服务器直接访问文件。

    相反,这些文件将由您的网络服务器后面的后端应用程序访问,该应用程序通过 cookie 对您的用户进行身份验证。该应用程序将查看谁在尝试访问该文件并决定是否将其释放。请注意,该应用需要能够处理 byte serving 和/或媒体流。

    关于猜测 url - 让它不可猜测:使用随机 / 哈希名称。这将防止获得文件 url 的经过身份验证的用户猜测其他文件的 url。未经身份验证的用户将无法访问任何内容,即使他们知道 url。

    【讨论】:

    • 搜索引擎能否抓取这些视频的位置?
    • 不,除非你给他们密码:) 只有经过身份验证和授权的客户端才能首先看到位置,无论是人类还是机器人。如果有人在另一个网站上泄露了指向您视频的链接,搜索引擎仍然无法成功访问它,因为他们不会提供密码。
    • 但是 mp4 (domain.tld/14838383.mp4) 的路径无法验证 cookie。只有显示视频的html页面可以。是什么阻止了人们查看视频的源代码?
    • 路径能否验证cookies取决于网络服务器的配置,具体是它自己处理路径还是传递给后端应用程序。您可以配置网络服务器,以便 domain.tld/2983729.mp4 这样的路径由将验证 cookie 的应用程序处理。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2021-11-30
    相关资源
    最近更新 更多