node.js - connect/expressjs 中的 "signed"cookie 是什么?

标签 node.js cookies express connect

我试图弄清楚“签名 cookie”到底是什么。 网上没有多少,如果我试试这个:

app.use(express.cookieParser('A secret'));

但仍然...... Cookies 在浏览器上仍然是 100% 正常的,我真的不知道这里的“签名”是什么(我有点希望在客户端上“看到”一些奇怪的东西,比如使用“ secret ”作为盐加密的数据?)

文档说(https://github.com/expressjs/cookie-parser):

Parse Cookie header and populate req.cookies with an object keyed by the cookie names. Optionally you may enabled signed cookie support by passing a secret string, which assigns req.secret so it may be used by other middleware.

有人知道吗?

佣兵。

最佳答案

cookie 仍然是可见的,但它有一个签名,因此它可以检测客户端是否修改了 cookie。

它通过创建 HMAC 来工作的值(当前 cookie),base64 对其进行编码。当 cookie 被读取时,它会重新计算签名并确保它与附加到它的签名匹配。

如果不匹配,则会报错。

如果您还想隐藏 cookie 的内容,则应该对其进行加密(或仅将其存储在服务器端 session 中)。我不确定是否已经有中间件。

编辑

并创建一个您将使用的签名 cookie

res.cookie('name', 'value', {signed: true})

要访问签名的 cookie,请使用 reqsignedCookies 对象:

req.signedCookies['name']

关于node.js - connect/expressjs 中的 "signed"cookie 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11897965/

相关文章:

node.js - 如何删除数组中的 {} 空字段..nodejs

javascript - 如何检索类中变量的值

php - Cookie 未在 PHP 脚本中正确设置

java - pub cookie 身份验证后从 apache Web 服务器获取用户 ID

javascript - 如果 cookie 大小超出浏览器限制,浏览器会抛出一些错误吗?

javascript - 尝试通过 Express Node.js 提供 ejs 文件时出错

node.js - socket.io 是否将轮询升级为 websocket 传输?

node.js - 每个客户端心跳都会触发 Socket.io "connection"事件?

javascript - 如何在 Controller 文件中使用 socket.io

node.js - Mongoose 查找与执行。如何返回值?