我试图弄清楚“签名 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 asecret
string, which assignsreq.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,请使用 req
的 signedCookies
对象:
req.signedCookies['name']
关于node.js - connect/expressjs 中的 "signed"cookie 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11897965/