【发布时间】:2017-01-04 11:19:57
【问题描述】:
我正在尝试在sails.js 后端(使用版本0.12.x)中为socket.io 客户端实现某种安全性。为了实现这一点,我尝试阻止没有正确 cookie 的客户端成功握手(事先没有授权会话),或者喜欢使用 passport.js 来查看客户端是否经过身份验证的 HTTP 请求。
在 Sails.js 文档中,我发现这应该是可能的,但我找不到任何提示,如何真正做到这一点。另一方面,在互联网上寻找示例,人们大多不使用套接字安全性,或者使用一些旧版本的sails.js(
到目前为止我发现的最接近的是config/sockets.js:
beforeConnect: function(handshake, cb) {
if (handshake.headers.cookie) {
console.log(handshake);
// TODO: check session authorization
} else {
return cb(null, false);
}
return cb(null, true);
},
这应该检查与握手一起发送的 cookie,如果它有一个正确的会话。我很难弄清楚,如何将 cookie 中的 sid 映射到sails.js 中的当前会话,以决定是否应允许连接。
问题:
- 如果只允许少量客户端(应该允许大约 40-50 个动态生成的用户进行连接),而没有其他人,那么 socket.io 的最佳安全实践是什么?
- 如何将 cookie 中的sails.sid 映射到活动会话?
- 还有哪些其他配置可以成为我的目标的捷径(例如,设置一些策略,socket.io 请求使用与 http 相同的中间件)?
感谢任何提示、链接或建议。
【问题讨论】:
标签: node.js sockets security socket.io sails.js