【发布时间】:2018-08-23 19:12:10
【问题描述】:
我对密码学一无所知。我想知道会话秘密是什么。
我看到这样的代码:
app.use(express.session({
store: mongoStore({
url: app.set('db-uri')
}),
secret: 'topsecret'
}));
秘诀是什么,我应该改变它吗?
【问题讨论】:
我对密码学一无所知。我想知道会话秘密是什么。
我看到这样的代码:
app.use(express.session({
store: mongoStore({
url: app.set('db-uri')
}),
secret: 'topsecret'
}));
秘诀是什么,我应该改变它吗?
【问题讨论】:
是的,你应该改变它。 connect 中的会话密钥仅用于计算哈希。如果没有字符串,对会话的访问基本上会被“拒绝”。看看connect docs,应该会有所帮助。
【讨论】:
topsecret 之类的默认值。秘密应该是一个随机的字符串。理想情况下,您还应该定期更改它以防被发现。但是,这需要支持密钥轮换,因此您不会立即使现有会话无效。也就是说,两个会话秘密应该同时被认为是有效的。据我所知,Express 目前不支持轮换密钥。
秘密用于使用 HMAC 对会话进行哈希处理:
https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L256
然后通过检查指纹与带有密钥的哈希值来保护会话免受会话劫持:
https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L281-L287
【讨论】: