我试图找出什么“签名的cookie”实际上是。
网上没有太多,如果我试试这个:
网上没有太多,如果我试试这个:
app.use(express.cookieParser('A secret'));
但仍然… Cookies在浏览器上仍然是100%正常,我不知道什么是“signed”在这里(我希望“看到”一些奇怪的客户端,像数据加密使用“秘密”作为盐?)
文档说(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.
有人知道吗?
Merc。
解决方法
Cookie仍然可见,但它具有签名,因此它可以检测客户端是否修改了Cookie。
它的工作原理是创建一个HMAC的值(当前cookie),并base64编码。当cookie被读取时,它重新计算签名,并确保它匹配附加到它的签名。
如果它不匹配,那么它会给出一个错误。
如果你想隐藏cookie的内容,你应该加密它(或只是存储在服务器端会话)。我不知道有没有中间件已经有或没有。
编辑
并创建一个签名的cookie,你会使用
res.cookie('name','value',{signed: true})
并且要访问签名的cookie使用req的signedCookies对象:
req.signedCookies['name']