【问题标题】:How to limit live streaming page to one connection per user?如何将实时流媒体页面限制为每个用户一个连接?
【发布时间】:2013-04-13 18:57:41
【问题描述】:

我想限制连接到我的直播页面的用户,这样用户就不能在同一帐户下从不同位置共享密码和多次登录。

我不介意一位用户在家中使用两台不同的设备(例如计算机和 Google TV)登录。这让我觉得基于源 IP 地址的限制是处理这个问题的正确方法。

问题在于,如果用户登录,并且我记录了他们的 IP 地址,并限制他们仅从该 IP 登录,他们就无法更改位置。

使用 HTTP,在他们登录后,它是无连接的,所以我不知道他们是否正在观看来自 CDN 的流。

这让我觉得如果用户登录到另一个位置,我应该在客户端使用 javascript 来断开播放器的连接。

这意味着我需要以一种可扩展的方式与登录的客户端进行通信。

您能建议一种适当的方法来处理这个问题吗?我觉得必须有一个简单且可扩展的解决方案。

【问题讨论】:

  • 如果您通过 CDN 分发流,那么您无法控制谁访问它们。
  • 我可以控制谁有权嵌入播放器和播放器的配置。我只需要创建一个从登录服务器到浏览器或 CDN 的反馈机制。
  • 客户端的访问控制很容易被绕过。
  • 是的,我知道。有没有更好的方法来解决这个问题?

标签: javascript node.js connection streaming user-tracking


【解决方案1】:

这实际上取决于您对绕过您的访问控制的人的敏感程度。

如果您对某些人绕过他们没问题,那么您可以在客户端执行访问控制,并让客户端每 60 秒左右对服务器执行一次 ping 操作,告诉服务器它仍在流式传输。然后在服务器中,将用户的 IP 地址存储在过期队列中。因此,如果玩家停止 ping 服务器,IP 地址将在 3 分钟后从队列中过期。通过 ping 服务器,我的意思是发送一个简单的 http GET 请求以保持会话打开。当用户关闭客户端时,ping 将停止,您的服务器将在 3 分钟后使该客户端的 IP 地址过期。此时,用户可以使用不同的 IP 地址登录。

请务必记住,精明的用户将能够在 Chrome 等浏览器中观看网络事件,并查看您的内容从哪里提供,并轻松绕过任何限制,因为您无法控制 CDN 本身。

如果您需要更严格的控制,则需要从您的服务器提供内容。然后,您绝对会知道客户端何时停止访问流。

可能有一个中间立场。如果您担心没有 CDN 的流式传输速度,您可以考虑查看 CloudFlare.com。 CloudFlare 是一个 CDN 层,位于所有 http 请求的前面,甚至是动态请求。静态请求从边缘提供,就像普通的 CDN 一样,但动态请求通过 CloudFlare 的网络反向代理,每次都返回到您的服务器。如果您将流式传输请求设置为 CloudFlare 的动态内容,那么您将获得通过与边缘点的低延迟、高带宽连接进行流式传输的潜在好处,同时仍然能够单独跟踪用户。

【讨论】:

  • 这是一个合理的方法。我同意依赖客户端来强制执行安全性并不理想,并且只会阻止一些(可能是大多数)用户共享密码。我在这里看到的可能的最佳答案是与 CDN 集成以进行访问控制。与我一起工作的两个人都有某种基于令牌的授权系统,我可能能够做我需要做的事情。这里的想法是我可以从 CDN 发布令牌,并需要 ping 以防止令牌被撤销。如果我能找到类似的东西,那就太理想了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2011-05-21
  • 2011-01-21
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多