socket.io:在握手对象中存储敏感数据是否安全?

时间:2014-01-28 10:06:11

标签: node.js socket.io

我想在握手对象中保存一些用户敏感数据。服务器端代码如下所示:

io.configure(function (){
 io.set('authorization', function (handshakeData, callback) {

   var objAuthorized = IsUserAuthorized(handshakeData);

   if (objAuthorized.authorized) {
        handshakeData.password = objAuthorized.password; // Store sensitive data inside handshake
        handshakeData.email = objAuthorized.email; // Store sensitive data inside handshake
        callback(null, true);
     } else {
        callback(null, false);
     }

  });
});

io.sockets.on('connection', function (socket) {
  socket.on('do something', function() {
     if DoSomething(socket.handshake.password, socket.handshake.email) {
        // do something here
     }
  });
});

以上示例取自https://github.com/LearnBoost/socket.io/wiki/Authorizing

在握手对象中保存敏感数据是否安全?客户端可以在套接字连接的生命周期内以某种方式修改此数据吗?

由于

1 个答案:

答案 0 :(得分:0)

据我所知,这没有任何问题,用户无法在socket.io中获得授权的权限。但是,这不是一种好方法或良好做法。

大多数开发人员不会这样做,他们在其应用程序的其他部分处理身份验证/授权,并在socket.io上留下cookie和会话验证。这也将消除socket.io服务器上的开销。

<小时/> 已更新

以下示例显示了如何使用sessions express / socket.io

一些有用的链接:

请注意,您必须使用通用登录表单对用户进行身份验证,并将凭据与数据库匹配,如果您之前使用过PHP和用户身份验证,则不会遇到问题。匹配用户凭据后,您可以设置sessionID和任何其他数据,其余数据由express。

处理