[英]Session Management problem with http-only cookies Node.js,React
我只是对 session 管理感到困惑。 For session management, currently im using http-only cookies to store my JWT but these cookies cannot be reached by everyone because of browser's cookie settings which I think is bad for the user experience. 因此,当我搜索本地存储等替代方式时。 我了解到您在这些方面不够安全。 你会建议我如何处理我上面提到的问题? 我应该将整个身份验证系统更改为服务器端还是任何想法?
//认证
res.cookie('token', token, {
httpOnly: true,
secure: true,
sameSite: 'None',
maxAge: 7 * 24 * 6 * 604800,
});
//登出
res.cookie('token', '', {
httpOnly: true,
secure: true,
sameSite: 'None',
maxAge: 1,
});
res.clearCookie('token');
您应该使用httpOnly
cookie 来阻止来自 JS 的访问,(使用 xss attach 您可以在其他用户会话上执行 JS)。
我的建议(我们基于前端客户端处理 JWT 的终极指南)是使用 2 种令牌:
httpOnly
cookie 上,仅用于更新 accessToken,长期有效(不建议超过 1 天)这个想法是这样的:
accessToken
生成httpOnly
cookie,并返回refreshToken
作为响应。Axios
使用时,您可以将其作为基本授权 header 附加到所有请求)。/auth/token
发出请求,端点验证 refreshToken,并返回一个过期时间为 10 分钟的新 accessToken(您的客户端应用程序会更新基本 Auth header),然后您的应用程序可以使用新的 accessToken 重试先前失败的请求。 使用此方法,您无法从应用程序外部访问任何类型的令牌。 你的js根本无法访问refreshToken
,accessToken保存在memory中,只有当你的应用程序有一些缺陷时才会暴露,即使攻击者偷了它,它也只有10分钟有效(无法获得一个新的,因为它没有 refreshToken)
有关更多详细信息,请阅读我添加的文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.