Node.js WebSocket-避免未知连接

Node.js WebSocket-避免未知连接,node.js,nginx,websocket,Node.js,Nginx,Websocket,我有一个运行websocket服务器(socket.io,全部基于node.js)的WebsiteX,它向客户端提供实时数据 现在,竞争对手Y开始连接到我们的websocket服务器,直接从中窃取数据,并在其网站上实时显示 我曾多次尝试阻止他们的IP,但他们只会在几分钟内不断更改。(各种AWS/云托管提供商)。我检查了推荐人的标题,用户代理,接受语言,几乎任何东西,但所有这些都是虚构的,他们已经这样做了 websocket连接通过nginx代理(如果有帮助的话) 你会怎么做?客户X(网站)或客户

我有一个运行websocket服务器(socket.io,全部基于node.js)的WebsiteX,它向客户端提供实时数据

现在,竞争对手Y开始连接到我们的websocket服务器,直接从中窃取数据,并在其网站上实时显示

我曾多次尝试阻止他们的IP,但他们只会在几分钟内不断更改。(各种AWS/云托管提供商)。我检查了推荐人的标题,用户代理,接受语言,几乎任何东西,但所有这些都是虚构的,他们已经这样做了

websocket连接通过nginx代理(如果有帮助的话)

你会怎么做?

客户X(网站)或客户Y(竞争对手)毫无意义。只是个客户。除非您限制IP(您已经知道它失败),否则没有可靠(即不可能破解)的方法来区分它们。这是因为客户机Y可以很容易地从头构建HTTP请求/Websocket连接,使其看起来像客户机X。还有更多:走这条路可能会浪费时间和其他资源。最终你会被黑客攻击。问题是:哪家公司有更多的资源来承受这场斗争

身份验证没有太大变化。因为客户端Y也可以进行身份验证。与其与IP抗争,不如与用户凭据抗争。不过这可能更容易。你应该试试看


因此,我认为,你最终得到的是不断的监控和反应。如果他们违反法律/协议,那么你应该起诉他们。如果他们不这样做,那么你可以尝试这种游击战。您可能最终会赢,谁知道呢。

您可以验证websocket请求中的头是否与客户端的来源相匹配。但是,我不确定是否有可能伪造此标头。

身份验证子系统在很大程度上是解决此问题的众所周知的解决方案。

您是否尝试过身份验证或消息加密?用户身份验证?来宾当前也可以检索此实时提要。消息加密?解密将完全是客户端的,所以他们不会花太长时间来弄清楚,我想?我看到了这一点,我希望我可以继续以某种方式将数据提供给客人。是时候实施身份验证了,这肯定会减慢他们的速度,让我更容易阻止他们。当然这是可能的。事实上没有比这更容易的了。您假设客户端正在使用浏览器。而现实情况是,可能存在一个“请求伪造”服务器。