NodeJS 将用户的令牌存储在React Redux中还是存储在cookie中?

ebdffaop  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(121)

我正在编写一个MERN webapp。我用React Redux存储用户的令牌,所以我检索这个令牌来获取用户的数据,但是收集了一些关于刷新令牌的信息来实现这个功能,我意识到一些示例将用户的会话存储在cookie中。我的问题是,什么是最佳实践?可以用React Redux存储代币吗?请帮我弄清楚这一点。

fykwrbwg

fykwrbwg1#

有两种存储会话数据的方法。它可以在客户端或服务器端。
1.将令牌存储在客户端存储中(例如Redux Store,本地存储):使用React Redux很容易实现,因为令牌可以在客户端应用程序中轻松访问和管理。但它容易受到跨站脚本(XSS)攻击。恶意脚本可能会访问和提取客户端存储中的令牌。某些浏览器扩展或其他客户端漏洞可能会窃取令牌数据,因为除非明确清除,否则即使在用户会话关闭后令牌也会持续存在。
因此,如果您选择
在客户端存储中存储令牌
...

  • 采取预防措施以降低安全风险。使用安全编码实践来防范XSS攻击和其他漏洞。
  • 考虑实施其他安全措施,如令牌过期和刷新机制,以最大限度地降低令牌滥用的风险。

1.在服务器端会话或Cookie中存储令牌:令牌存储在服务器端,不能直接通过客户端脚本访问。服务器端会话管理可以提供对令牌生命周期的更多控制,包括过期和撤销。但是,它需要服务器端会话管理实现,这可能比客户端存储更复杂,但也更安全。Cookie有大小限制(通常在4KB左右),可能不适合存储大型令牌有效负载。
因此,如果您选择在服务器端会话或cookie中存储令牌,请确保您遵循会话管理和cookie处理的安全实践。实施适当的安全措施,例如使用
安全(HTTPS)连接
、设置适当的cookie属性(例如secure、httpOnly)以及正确管理会话过期和撤销。
最终,最佳方法取决于您的特定应用程序要求和安全考虑。评估数据的敏感性、涉及的潜在风险以及实施和维护所选方法所需的工作量至关重要。

相关问题