【问题标题】:Is it appropriate to store the user Object in localstroage?将用户对象存储在本地存储中是否合适?
【发布时间】:2019-01-15 13:50:05
【问题描述】:

我目前正在使用 JWT rails 和 Angular。使用用户 ID 对令牌进行编码后。成功注册后,我将发回用户对象和用于每个后续请求的令牌。解码令牌只能给我用户 ID。参考当前用户,我是否应该继续将用户对象存储在本地存储中(我担心有人可能会劫持另一个人的数据)?或者我应该继续使用解码后的 userId 发出请求以获取当前用户(我担心这对服务器来说太多了)。

【问题讨论】:

  • 它是您的 Web 应用程序还是混合移动应用程序?
  • 这是一个网络应用程序。

标签: angular jwt frontend


【解决方案1】:

将用户详细信息保存到本地存储是不安全的。所以你可以使用 crypto-js 库并在保存到本地存储之前对其进行编码,在显示到 DOM 之前对其进行解码。

encrypt(data) {

    try {
      return CryptoJS.AES.encrypt(JSON.stringify(data), this.encryptSecretKey).toString();
    } catch (e) {
      console.log(e);
    }
  }

  decrypt(data) {

    // avoid UTF-8 Decode Error
    try {
      const bytes = CryptoJS.AES.decrypt(data, this.encryptSecretKey);
      if (bytes.toString()) {
        return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
      }
      return data;
    } catch (e) {
      console.log(e);
    }
  } 

【讨论】:

  • 这是错误的,不是真的。首先,encode/decode 和 encrypt/decrypt 是有区别的,其次,只要你在客户端进行操作,加密与否都无所谓,如果攻击者可以访问你的本地存储,他可以和你一样由他自己解密。
  • @dAxx_ 感谢您的回复,那么在无状态应用程序中处理当前用户的最佳解决方案是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多