我应该担心 ReactJS 中本地存储中的令牌可见性吗?

我正在制作一个 ReactJS 应用程序,并且有一个基于令牌的身份验证(Laravel Sanctum),它在用户登录时发出,我将其保存在浏览器的本地存储中。因此,我可以查找令牌并在像 Postman 这样的 HTTP 客户端中使用它。

让我担心的另一件事是我将成员信息存储在本地存储中,例如:

{
     name: "John Doe",
     privileges: [1, 2, 3, 4],
     jobPositionID: 1,
     departmentID: 5
}

它们不是敏感信息(令牌除外),但我是构建 SPA 的新手,并且我对这一切的安全方面感到很安全。

stack overflow Should I be concerned about token visibility in local storage in ReactJS?
原文答案

答案:

作者头像

在网络存储(sessionStorage/localStorage)而不是 Cookies 中存储会话令牌是一个相对有争议的主题。本质上,提出的主要问题是 Web 存储不为会话令牌提供任何保护以防止 XSS 攻击,而 Cookies 支持阻止 JavaScript 访问 cookie 的“httpOnly”标志,从而在一定程度上缓解了这个问题。

您应该考虑使用 sessionStorage 而不是 localStorage,因为 sessionStorage 不会跨浏览器会话持续存在。

此外,我强烈建议阅读 James Kettle 撰写的这篇关于在 Web 存储中存储令牌的精彩文章 - https://portswigger.net/research/web-storage-the-lesser-evil-for-session-tokens