首页 > 解决方案 > socket.io 消息是否在 https express (node.js) 应用程序上加密?

问题描述

我正在构建一个 Express (Node.js) 应用程序,它一方面使用 socket.io,另一方面使用身份验证系统。

我的问题指出我需要传递敏感信息来识别套接字请求,而且我知道通过发布数据(加密)或 https 标头(也加密),这样做是安全的,但是我不知道socket.io通过https发送的消息是否也被加密了。

这是为了避免 socket.io 通信中的中间人攻击。

我读过 Facebook 使用一种加密方式,而 Telegram 使用另一种加密方式。但也许不需要,我想,我没有用 Wireshark 检查过这方面的任何事情,所以也许有人知道如何处理这个问题,让事情尽可能简单,但安全。

标签: node.jsexpressencryptionhttpssocket.io

解决方案


它最终对我有用的方式是通过 https 和授权标头作为会话令牌来建立 socket.io 连接:

const socketio = require("socket.io-client");

const client = socketio("/namespace", {
    transports: ["websocket"],
    secure: true,
    rejectUnauthorized: false,
    extraHeaders: {
        authorization: "Bearer: " + MY_SESSION_TOKEN
    }
});

client.connect();
client.on("message", function(data) {
    console.log("Received: " + message);
    client.disconnect();
});

推荐阅读