如何保护客户端的 socket.io?

How can I secure socket.io on the client-side?

提问人:code 提问时间:4/1/2021 更新时间:4/1/2021 访问量:910

问:

注意:这不是重复的。请仔细阅读问题。

我正在用 socket.io 构建一个聊天应用程序;但是,我对安全性有很多担忧。基本上,任何人都可以连接到我的命名空间并获取从服务器发送的消息。在阅读了许多 SO 帖子并浏览了网络后,我得出结论,我需要加密数据。

问题:加密和解密需要密钥。我可以在服务器上存储私钥,但是由于客户端的所有内容对客户端都是可见的,因此如何防止恶意黑客在客户端看到密钥?


我看过socket.io-encrypt,但这只会让我更加困惑,因为客户端似乎也是用Node.js编写的。关于 SO 的其他答案我要么不明白为什么它有帮助,要么它们不能解决我的问题

node.js socket.io 安全 加密

评论

0赞 Tembero 4/1/2021
如果您的服务器启用了 SSL/TLS,则在客户端创建套接字时,您应该能够将安全标志设置为 true。
1赞 Artjom B. 4/1/2021
加密是通过 TLS 提供的,应该就足够了。您需要的是身份验证和授权。如果您有聊天应用程序,那么您可能有需要登录聊天的用户。这意味着,您可以在建立 socket.io 连接时验证服务器上的会话 Cookie。然后,服务器根据服务器上的套接字进行身份验证的标识确定应将哪些消息路由到客户端。了解您的问题不是重复的问题可能会有所帮助。
0赞 code 4/1/2021
好吧,它显然没有加密,因为我制作了另一个Node.js程序,它可以完美地捕获我的聊天服务器中的所有内容,而无需加密......我使用 replit.com 作为我的平台,所以我不确定如何启用 SSL/TLS,尽管我的网站是安全的(根据 Google 的说法)。
0赞 Tembero 4/1/2021
您是否尝试过通过https连接套接字?创建套接字时,将开头从 http 更改为 https
0赞 code 4/1/2021
那么,我如何在客户端设置一个标志,是什么让黑客也无法看到和使用这个标志呢?我的网站默认为https,因为我使用replit(在线IDE)。

答: 暂无答案