【问题标题】:Is socket.io or websocket safe to use with an express server?socket.io 或 websocket 是否可以安全地与 express 服务器一起使用?
【发布时间】:2021-04-22 09:31:20
【问题描述】:

我想有一个用 express 制作的实时系统,我开始了解 socket.io 和 websockets。但是它们的使用方式,即 const io = socket.io("https://example.com") ;

使用是否安全。由于套接字连接的 url 在客户端可用,任何第三方服务都可以通过从他们的服务连接来享受和利用这些服务。我对socket.io不太了解,如果我错了,请纠正我。

请不要将此问题标记为重复,因为我发现了一个类似的问题,但它的答案与游戏开发有关,这里我具体说明每当服务器端有任何更新时更新客户端。客户可能是使用 Angular 制作的网站或使用 Android Studio 制作的应用程序。 任何帮助都是非常值得赞赏的。

【问题讨论】:

    标签: node.js express socket.io real-time-updates


    【解决方案1】:

    socket.io 被广泛使用。它非常适合在生产中使用。

    关于身份验证部分,通过http升级请求(在http/1.1中)建立了一个websocket连接b/w客户端和浏览器。 如果您使用 cookie 和 session 为您的应用程序设置了身份验证机制,那么您应该是安全的。没有人可以在没有先登录的情况下直接建立 websocket 连接。除此之外,您可以限制每个用户的连接,以确保注册用户无法使用 cookie 数据进一步利用连接。

    【讨论】:

    • 使用套接字连接(双向通信)是否可行,因为在我的情况下,当数据库发生任何更改时,服务器需要发送数据。 SSE(服务器发送事件)或类似的东西呢?
    • SSE 是普通的 http,而 websocket 是一个不同的协议,它只使用 http 进行握手。我建议在 SSE 或长轮询等替代方案上使用 websockets。另请注意,SSE 无法处理二进制数据,并且将使用服务器和浏览器的一个专用连接,这可能是一个问题,因为浏览器将连接(6-10)限制为跨选项卡的域。在 websockets 的情况下,这个限制要高得多。但是,如果您的 Web 应用程序需要高度可扩展性,那么 websockets 可能会变得有点复杂。但在大多数情况下,websockets 可以完美运行。
    • 如果客户端及时更新不是很重要,也可以考虑轮询。例如:许多股票和加密货币代码仪表板使用轮询或 websockets。
    • 您能否分享任何可能的示例来解释我们如何使用平均堆栈验证套接字 io 连接。任何资源(链接、视频)也会有很大帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2016-04-01
    • 1970-01-01
    • 2011-12-21
    • 2016-02-28
    相关资源
    最近更新 更多