Connect 会话中间件签名 cookie 如何工作?

2024-01-09

我想了解 connect.sid cookie 在 Connect Node.js 框架中如何工作。我注意到它们的格式如下,

s:hash.signature

我不明白当哈希足以用于从内存存储或 Redis 存储访问会话数据时如何使用签名。

另外,我不明白为什么s:甚至在cookie中;它的目的是什么。

我听说签名用于“签署”哈希值。 “签署”或“签署”到底是什么意思?我也需要对这个过程的解释。

Thanks!


签名在那里,因此服务器可以验证它是否生成了 cookie,而不是某个随机攻击者。

只有知道用于签名的秘密的人才能使用相同的值对其进行签名。

存在“s:”,因此很容易知道它是签名的 cookie,而不是其他格式(如未签名的)。

这是一种从签名 cookie 中检索数据的方法,如果签名不正确,则会失败。仅从实际应用程序中提取了部分代码,但您应该明白了。

var cookie = require('cookie');
var connect = require('connect');
var secret = "same secret used to sign cookies";

socketio.set('authorization', function(data, cb) {
  if (data.headers.cookie) {
    var sessionCookie = cookie.parse(data.headers.cookie);
    var sessionID = connect.utils.parseSignedCookie(sessionCookie['connect.sid'], secret);
    // do something here with decoded value
  }
});

您需要使用 socket.io 中的“授权”功能,以便可以访问标头。该代码在使用 xhr-polling 传输时有效,我不确定这是否适用于 websocket。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Connect 会话中间件签名 cookie 如何工作? 的相关文章

随机推荐