【发布时间】:2018-08-16 09:05:45
【问题描述】:
这是一个非常开放的问题,但无论我在哪里看,我都无法得到一个直接的答案。问题在标题中,但是...
我应该在用户登录时返回用户的加密密码或令牌
额外信息
我正在使用 Angular5 运行 MEAN 堆栈应用程序。我正在为用户使用会话并将其存储在 MongoDB 中。因此,据我了解,会话 cookie 用于对用户进行扩展会话的身份验证,而不是密码(我尚未了解 Facebook 或 Twitter 策略,但据我了解,cookie 验证用户而不是 Facebook 的令牌/Twitter 给了我正确的吗?)。
我确实想将用户数据传递给我的 Angular 应用程序并存储在浏览器本地存储中,以便快速、非服务器端验证用户是否已登录。这只是出于美观原因,例如显示用户名和个人资料图片.受限的 POST 和 GET 仍然需要使用护照进行服务器端验证。所以我的问题是,由于会话保存在 cookie 中,是否有任何理由将密码或令牌发送给用户/浏览器?即使密码是加密的(使用 bcrypt),发送它似乎仍然是一个不必要的安全漏洞。是否有可能在将来遇到我希望将密码存储在浏览器中的原因?
【问题讨论】:
-
除了发送密码/令牌,您也可以将用户信息存储在cookie中,这样只要会话或cookie有效,信息就有效。这能回答你的问题吗?
-
是的,确实如此。你会怎么做呢?那也安全吗?
-
取决于信息的敏感程度。如果您想阻止任何用户信息存储在客户端上,您可以在验证会话时在响应中发送用户信息。这篇文章涵盖了一个类似的主题:security.stackexchange.com/questions/36318/…
-
我要存储的信息一点也不敏感。文章似乎在说信息(例如密码)与用户计算机一样安全,并且我只会在用户拥有权限的情况下暴露(这对于几乎所有用户来说都是非常有限的)。我的问题是,如果我在会话中没有使用他们的密码,会有什么影响?我有什么理由吗?将其存储在会话中或与用户一起存储有什么好处?
-
不建议将密码存储在会话中,
session cookie的全部意义在于防止在会话期间不必要地存储验证用户的密码。
标签: javascript angular passport.js mean-stack passport-local