我想在握手对象中保存一些用户敏感数据。服务器端代码如下所示:
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。
在握手对象中保存敏感数据是否安全?客户端可以在套接字连接的生命周期内以某种方式修改此数据吗?
由于
答案 0 :(得分:0)
据我所知,这没有任何问题,用户无法在socket.io
中获得授权的权限。但是,这不是一种好方法或良好做法。
大多数开发人员不会这样做,他们在其应用程序的其他部分处理身份验证/授权,并在socket.io
上留下cookie和会话验证。这也将消除socket.io服务器上的开销。
以下示例显示了如何使用sessions express / socket.io
一些有用的链接:
请注意,您必须使用通用登录表单对用户进行身份验证,并将凭据与数据库匹配,如果您之前使用过PHP和用户身份验证,则不会遇到问题。匹配用户凭据后,您可以设置sessionID和任何其他数据,其余数据由express。
处理