【发布时间】:2015-09-16 05:47:57
【问题描述】:
我最近注意到我正在咨询的一个应用程序正在使用未加密的 cookie。前端(Angular)经常使用以下方式来提取用户id:
var user_id = JSON.parse($cookies.userdata).id;
我想一个讨厌的访问者可能会不断地使用他们的浏览器来更改他们的 ID 并访问他们不应该访问的资源。这是一个巨大的危险信号,我可以使用一些帮助来支撑它。 This looks like a solid enough guide,但我还没有完全理解不同的部分。
如果我使用 Mozilla 的客户端会话,cookie 中究竟存储了什么?有什么我想要的吗?我有诸如
GET /api/v1/user/:user_id之类的 API 路由来返回有关用户的信息。如果 cookie 在浏览器上被加密,我将无法访问当前的user_id并进行此 API 调用。我的行动计划是什么?为这个 API 创建一个代理服务器端,它将首先解密 cookie,提取user_id,然后然后调用GET /api/v1/user/:user_id? API 路由受一个检查req.isAuthenticated() === true的函数保护,如果这有帮助的话。鉴于上述情况,会话在什么时候开始发挥作用?假设我将用户会话存储在 MongoDB 中。我们知道 cookie 只能存储 4kb,但如果这足够了呢?什么样的数据应该存储在cookie中,什么样的数据应该存储在用户的会话中?
您的回答将大大有助于澄清一些对我来说有点黑匣子的概念。
【问题讨论】:
标签: node.js security session cookies express