【问题标题】:NodeJS how to secure socket.io sessions across different countriesNodeJS 如何保护不同国家/地区的 socket.io 会话
【发布时间】:2017-03-27 11:12:52
【问题描述】:

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

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

我已经在本地环境中使用它,但想在其他站点中部署它。

我尝试用谷歌搜索看看是否有其他人这样做过,但遇到了 socket.io 会话,但我不知道这是否适合(服务器->服务器)连接。

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

【问题讨论】:

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


    【解决方案1】:

    对于您控制通信两端的服务器-服务器通信,您可以使用基于 HTTPS 的 WebSocket,您可以使用基于 SSH 隧道的 TCP 或任何其他加密隧道。您可以使用 PubSub 服务、队列服务等。有很多方法可以做到这一点。只需确保通过您使用的协议或 VPN 或连接远程服务器的隧道对通信进行本地加密。

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

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

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

    所有使用 HTTP 的东西都可以很容易地用 HTTPS 加密。其他一切都可以使用隧道或 VPN 进行加密。

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

    另见:

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

    【讨论】:

    • 感谢您的回答,我们有一个位于 socket.io 之上的应用程序,它会检查接收到的数据。主服务器将向客户端服务器(从属服务器)发送数据,例如“DoNetworkScan”,从属服务器将执行该任务,然后一旦该任务完成,将向主服务器发送一条消息。跨站连接是通过 VPN 实现的,所以你知道我会使用 socket.io 实现 HTTPS 吗?
    猜你喜欢
    • 2013-06-12
    • 2016-12-14
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2020-05-18
    • 2011-02-20
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多