我正在编写一个MERN webapp。我用React Redux存储用户的令牌,所以我检索这个令牌来获取用户的数据,但是收集了一些关于刷新令牌的信息来实现这个功能,我意识到一些示例将用户的会话存储在cookie中。我的问题是,什么是最佳实践?可以用React Redux存储代币吗?请帮我弄清楚这一点。
fykwrbwg1#
有两种存储会话数据的方法。它可以在客户端或服务器端。1.将令牌存储在客户端存储中(例如Redux Store,本地存储):使用React Redux很容易实现,因为令牌可以在客户端应用程序中轻松访问和管理。但它容易受到跨站脚本(XSS)攻击。恶意脚本可能会访问和提取客户端存储中的令牌。某些浏览器扩展或其他客户端漏洞可能会窃取令牌数据,因为除非明确清除,否则即使在用户会话关闭后令牌也会持续存在。因此,如果您选择在客户端存储中存储令牌...
1.在服务器端会话或Cookie中存储令牌:令牌存储在服务器端,不能直接通过客户端脚本访问。服务器端会话管理可以提供对令牌生命周期的更多控制,包括过期和撤销。但是,它需要服务器端会话管理实现,这可能比客户端存储更复杂,但也更安全。Cookie有大小限制(通常在4KB左右),可能不适合存储大型令牌有效负载。因此,如果您选择在服务器端会话或cookie中存储令牌,请确保您遵循会话管理和cookie处理的安全实践。实施适当的安全措施,例如使用安全(HTTPS)连接、设置适当的cookie属性(例如secure、httpOnly)以及正确管理会话过期和撤销。最终,最佳方法取决于您的特定应用程序要求和安全考虑。评估数据的敏感性、涉及的潜在风险以及实施和维护所选方法所需的工作量至关重要。
1条答案
按热度按时间fykwrbwg1#
有两种存储会话数据的方法。它可以在客户端或服务器端。
1.将令牌存储在客户端存储中(例如Redux Store,本地存储):使用React Redux很容易实现,因为令牌可以在客户端应用程序中轻松访问和管理。但它容易受到跨站脚本(XSS)攻击。恶意脚本可能会访问和提取客户端存储中的令牌。某些浏览器扩展或其他客户端漏洞可能会窃取令牌数据,因为除非明确清除,否则即使在用户会话关闭后令牌也会持续存在。
因此,如果您选择在客户端存储中存储令牌...
1.在服务器端会话或Cookie中存储令牌:令牌存储在服务器端,不能直接通过客户端脚本访问。服务器端会话管理可以提供对令牌生命周期的更多控制,包括过期和撤销。但是,它需要服务器端会话管理实现,这可能比客户端存储更复杂,但也更安全。Cookie有大小限制(通常在4KB左右),可能不适合存储大型令牌有效负载。
因此,如果您选择在服务器端会话或cookie中存储令牌,请确保您遵循会话管理和cookie处理的安全实践。实施适当的安全措施,例如使用安全(HTTPS)连接、设置适当的cookie属性(例如secure、httpOnly)以及正确管理会话过期和撤销。
最终,最佳方法取决于您的特定应用程序要求和安全考虑。评估数据的敏感性、涉及的潜在风险以及实施和维护所选方法所需的工作量至关重要。