用户身份验证的常见流程如下所示:
然而,我的问题是关于
但是,有什么替代方案吗?
我们可以将其存储在设置了 "httpOnly" 标志的 cookie 中吗?但这是否会使其容易受到 CSRF(跨站请求伪造)攻击?
加密令牌并仍然将其保存在浏览器存储器中是否安全?
提前感谢您的回答。最好的问候!
- 用户使用其凭据(用户名/密码)注册并登录
- 服务器验证用户的凭据,如果有效,则返回一个访问令牌和刷新令牌
- 发送
access token
的进一步请求,并在令牌有效时,服务器响应请求的资源 - 当
access token
不再有效时,服务器会要求客户端提供一个refresh token
以便发放新的access token
- 服务器接收到
refresh token
,可能会发生两件事情:- 如果
refresh token
有效,则向客户端发放新的access token
- 如果无效,则服务器要求用户进行身份验证
- 如果
access token
,该令牌应存储在浏览器存储器(本地/会话存储)或 cookie 上,这使其容易受到 XSS(跨站脚本)攻击。如果我们将 access token
的寿命设置短一些,可以减轻此问题。然而,我的问题是关于
refresh token
的。该令牌应具有较长的生命周期,并且由于我们使用它获取新的 access tokens
,如果攻击者截取了该令牌,这将是一个问题。因此,在客户端存储此令牌可能不是个好主意,对吧?但是,有什么替代方案吗?
我们可以将其存储在设置了 "httpOnly" 标志的 cookie 中吗?但这是否会使其容易受到 CSRF(跨站请求伪造)攻击?
加密令牌并仍然将其保存在浏览器存储器中是否安全?
提前感谢您的回答。最好的问候!