存储在客户端时如何保护令牌?

时间:2021-02-05 08:44:29

标签: reactjs security cookies aes token

我们有一个系统可以将我们的用户连接到 2-3 个第三方应用程序。因此,我们通常在客户端为用户存储用于这些应用程序的令牌。当我们对我们的服务器(我们的服务器由我们维护)进行 API 调用时,我们还将令牌发送到后端,在那里它将用于对这些应用程序进行 API 调用。现在,我们没有使用数据库,因此我们无法将这些令牌存储在服务器端并持有会话令牌。

  1. 在客户端持有令牌的最佳方法是什么?将它们保存在 Cookie 中是否安全?
  2. 让它们保持开放对我们来说似乎不太安全,因此我们计划为它们添加 AES 加密,并且每当它们被发送到服务器时,它们都会被解密并用于 API 调用。
  3. 这是我们可以继续保持令牌安全的最佳方法吗?或者还有其他更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果客户端不需要使用该令牌,而只希望将其转发到服务器以与第 3 方进行身份验证,我认为对其进行加密绝对是个好主意。这样一来,最终泄露的加密令牌就无法用于向第 3 方发出请求。

Cookie 应该是存储这些令牌的安全位置,只要您确保对它们启用 fSecure 属性 (more about restricting access to cookies)。简而言之,您可以防止 cookie 通过未加密的通道传输(降低遭受中间人攻击的风险)和从 Javascript 访问(这可以防止您的 cookie 被对您的客户端的 XSS 攻击访问) .