【问题标题】:Passport js - Should I return the users encrypted password or token?Passport js - 我应该返回用户加密的密码还是令牌?
【发布时间】: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


【解决方案1】:

快速回答是否定的,您不要也不应该将敏感数据传回前端。

我通常做的是当我返回一个“用户”对象作为对前端的响应时,我通过一个帮助函数运行它,该函数过滤掉敏感数据,如加密密码和盐等......

【讨论】:

  • 或者只是不要在你的查询中使用* ;p
  • 同意,但有时您可能需要敏感数据才能在服务器端执行某些操作
猜你喜欢
  • 2019-12-22
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2016-03-31
相关资源
最近更新 更多