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 。

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

谢谢

据了解,目前没有任何问题,用户无法从socket.io授权中获得权限,但是这并不是一个好的方法或好做法。

大多数开发人员不会这样做,他们在应用程序的其他部分处理authentication/授权,并在socket.io上进行cookie和会话validation。 这也将删除socket.io服务器上的开销。


更新

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

一些有用的链接:

请注意,您必须以通用login表单对用户进行身份validation,如果以前使用过PHP和用户身份validation,则不会出现问题。 在匹配用户凭证后,您将设置sessionID和其他任何数据,其余部分由express处理。