Node.js的加密与签名的cookie

问题描述 投票:0回答:1

我想从我的cookie中检索值。

我正在使用passport.js,在这个任务中,我尝试了不同的东西。

  1. 我运行req.cookies;给我这个: 's:x05d6V5Dhf6efFGjIkO26Ka1.imN4lT7OhW83Nc9Z7vw5dFbCoQhanP3aa37iyNWQyvU' } 这是签名cookie还是加密cookie? 's:'在一开始使它看起来像一个签名的,但是当我跑req.signedCookies;时,我找回了一个空对象{}。这个cookie是签名还是加密的? 然后我跑了:req.sessionID;回复了这个: x05d6V5Dhf6efFGjIkO26Ka1 如您所见,这也包含在我的cookie中,在点之前。所以我猜sessionId存储在我的cookie中,对吗? 然后我跑了req.secret;,然后返回undefined
  2. 是会话中的秘密,在此处声明: app.use(express.session({ secret: 'blablablabla' })); 用于签署cookie或加密它?
  3. cookie签名模块只能取消签名cookie而不解密它们 - 这是正确的吗?它可以根据以前的会话密码取消签名吗?
  4. 最后,这个cookie存储在哪里?在我的mongodb?
node.js session encryption cookies passport.js
1个回答
1
投票

点后面的部分:

imN4lT7OhW83Nc9Z7vw5dFbCoQhanP3aa37iyNWQyvU

是会话ID的签名:

x05d6V5Dhf6efFGjIkO26Ka1

也就是说,会话ID用秘密加密,并附加到会话ID,用点组成cookie。

秘密不包含在cookie中。

如果您提供了正确的信息,cookie签名模块可以取消签名:

cookie-signature.ungisn(`${the_original_sessionid}.${the_encypted_sessionid}`,secret)
© www.soinside.com 2019 - 2024. All rights reserved.