NodeJS如何保护不同国家/地区的socket.io会话

时间:2017-03-27 11:12:53

标签: node.js security session ssl socket.io

我正在创建一个nodejs应用程序,它将为不同国家/地区的其他站点提供服务器,因为传输的数据将是业务相关数据。我想知道如何安全/安全地发送这些数据。

我目前正在使用socket.io作为我的主服务器(Master)在其他站点上有(Slave)服务器来处理来自主服务器的数据。

我在本地环境中工作,但希望在其他站点中部署它。

我曾尝试使用Google来查看是否有其他人这样做但遇到过socket.io会话但我不知道这是否适合(服务器 - >服务器)连接。

任何帮助或经验都将不胜感激。

1 个答案:

答案 0 :(得分:1)

对于控制通信两端的服务器 - 服务器通信,可以使用HTTPS上的WebSocket,可以使用TCP over SSH隧道或任何其他加密隧道。您可以使用PubSub服务,队列服务等。有很多方法可以做到。只需确保通信由您使用的协议本身加密,或者通过VPN或隧道连接远程位置的服务器。

Socket.io通常用作WebSocket的替代品,其中浏览器中没有本机支持。它很少用于服务器到服务器的通信。有关详细信息,请参阅此答案:

如果您想要一个专注于实时数据的更高级别框架,请参阅ActionHero:

对于在服务器之间发送实时数据的其他选项,您可以使用某些共享资源(如Redis数据库)或某些发布/订阅服务(如Faye或Kafka)或队列服务(如ZeroMQ或RabbitMQ)。这通常是为了使这样的事情跨服务器的多个实例或多个位置工作。您还可以使用CouchDB更改源或RethinkDB的类似功能,以确保所有实例在其中任何一个发布后立即获取所有数据。参见:

使用HTTP的所有内容都可以通过HTTPS轻松加密。其他所有内容都可以通过隧道或VPN进行加密。

可以为自身未加密的协议(例如Redis协议)添加加密的好工具是:

另见:

请注意,某些托管服务可能会为您提供预配置的隧道或内部网络接口,这些接口传递在位于该提供程序的不同数据中心的服务器之间加密的数据。一些提供商也可以轻松地为您提供工具和教程。