Websockets – 避免未知的连接

我有网站X运行一个websocket服务器(socket.io,全部基于node.js),并为客户提供实时数据。

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

我已经做了很多阻止他们的IP的尝试,但他们会在几分钟之内不断改变它。 (各种AWS /云托pipe提供商)。 我检查引用标题,用户代理,接受语言,几乎所有的东西都是可欺骗的,他们已经这样做了。

websocket连接通过nginx代理,如果有帮助的话。

你会怎么做?

客户X(网站)或客户Y(竞争对手)毫无意义。 这只是一个客户端。 除非你限制IP(你已经知道它失败了),否则没有可靠的(即不可能的)方法来区分它们。 这是因为客户端Y可以轻松地从头构建一个HTTP请求/ Websocket连接,使得它看起来像客户端X.还有更多的事情:沿着这条路走下去可能是浪费时间和其他资源。 最终你会被黑客入侵。 问题是:哪家公司有更多资源可以承受这场战斗? 🙂

身份验证不会有太大改变。 因为客户Y也可以认证。 这只是与你与用户凭证打的IP战斗。 这可能会更容易。 你应该试试。

因此,恕我直言,所有最终的结果是不断的监测和反应。 如果他们违反法律/协议,那么你应该起诉他们。 如果他们不这样做,那么你可以尝试这个游击战。 谁知道最终可能会获胜。

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

认证子系统在很大程度上是该问题的众所周知的解决方案。