我试图弄清楚什么是“签名cookie”。网上没有太多东西,如果我尝试这样做:
app.use(express.cookieParser('A secret'));
但仍然… Cookies在浏览器上仍然100%正常,而且我真的不知道这里的“签名”是什么(我有点希望在客户端上“看到”一些奇怪的东西,例如使用作为盐的“秘密”?)
该文档说(https://github.com/expressjs/cookie- parser):
解析 Cookie 标头,并填充req.cookies 以Cookie名称为键的对象。(可选)您可以通过传递一个secret字符串来启用签名cookie支持,该字符串会分配给req.secret它,以便其他中间件可以使用它。
req.cookies
secret
req.secret
有人知道吗
Merc。
该cookie仍然可见,但是具有签名,因此它可以检测客户端是否修改了cookie。
它通过创建具有值(当前cookie)的HMAC并通过base64对其进行编码来工作。当读取cookie时,它将重新计算签名,并确保它与附加的签名匹配。
如果不匹配,则将给出错误。
如果您还想隐藏cookie的内容,则应该对其进行加密(或仅将其存储在服务器端会话中)。我不确定是否已经有中间件了。
编辑
并创建一个签名的cookie,您将使用
res.cookie('name', 'value', {signed: true})
要访问已签名的cookie,请使用的signedCookies对象req:
signedCookies
req
req.signedCookies['name']