【问题标题】:Encrypting, then storing access token in localStorage加密,然后将访问令牌存储在 localStorage
【发布时间】:2019-07-28 20:01:11
【问题描述】:

我的 API 在用户登录后返回访问令牌。

所有未来的请求都必须在 Authentication 标头中包含此令牌。

我希望用户即使关闭并重新打开浏览器也能保持登录状态。

我能否安全地将这个访问令牌的加密版本存储在 localStorage 中、检索它、在我的 React 客户端代码中解密它并将其发送到 API?

【问题讨论】:

标签: javascript reactjs api jwt


【解决方案1】:

当然,如果您喜欢 https://www.npmjs.com/search?q=keywords:encrypt,您可以使用类似 https://www.npmjs.com/package/aes-js 或其他库的内容。

我认为真正的问题是为什么?用户始终可以在开发工具的网络请求中看到未加密的值。如果访问令牌与用户拥有的用户名和密码相关联,为什么他们看不到它?这实际上只是编写用户名和密码的另一种方式。如果它与属于您的应用程序的用户名相关联(例如,您的服务器使用该用户名登录到另一台服务器的所有请求,而不仅仅是这个用户),那么您不应该将它传递给浏览器,因为它是容易偷走。

【讨论】:

  • 这在攻击者窃取 JWT 令牌的情况下很有用,因此您可以安全地保存其信息。在这种情况下,尽可能多地隐藏数据。
  • 所以加密令牌可能有助于防止某些 XSS 攻击?
  • 如果您使用的是 JWE 令牌,用户将无法在网络请求中看到令牌的内容。因此,我认为加密 JWE 令牌并将其存储在本地存储中是一个不错的选择。我们可以使用 dotenv 将密钥存储在 env 文件中。这里的想法是防止恶意用户从本地存储中窃取您的 jwe 令牌并冒充您。我在安全方面很天真。只是分享我的想法。如果我错了,有人可以纠正我吗?
猜你喜欢
  • 2020-11-26
  • 2011-03-18
  • 2019-07-04
  • 2012-07-06
  • 2020-09-16
  • 2019-11-16
  • 2012-07-18
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多