You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web应用中access_token与refresh_token存储最佳实践

令牌存储与刷新的安全建议

问题1:客户端存储refresh_token的安全保障措施

如果要在客户端存储refresh_token,必须通过以下手段降低风险:

  • 强制使用安全Cookie属性:将refresh_token存入带有HttpOnly、Secure、SameSite=Strict/Lax的Cookie。HttpOnly阻止JS读取,避免XSS窃取;Secure确保仅通过HTTPS传输;SameSite限制跨站请求携带,缓解CSRF攻击。
  • 设置短有效期:refresh_token的有效期不宜过长(比如7-30天),降低泄露后的危害时长。
  • 启用refresh_token轮换:每次用旧refresh_token换取新access_token时,同时颁发新的refresh_token,旧token立即失效。即使旧token泄露,也无法再使用。
  • 绑定用户上下文:后端存储refresh_token时关联用户ID、设备指纹、IP段等信息,校验时比对上下文,发现异常直接拒绝并吊销token。
  • 限制Cookie路径:将Cookie的Path设置为/auth这类仅用于令牌刷新的路径,避免不必要的请求携带token。
  • 启用CSRF防护:针对刷新token的接口,要求前端提交CSRF令牌(存入非HttpOnly Cookie或页面元数据),后端校验后再处理请求。

问题2:三种方法中的最佳实践

方法1是现代Web应用的首选方案,原因如下:

  1. 防XSS能力强:access_token和refresh_token都存入HttpOnly Cookie,前端JS无法读取,从根源避免了XSS攻击导致的令牌窃取。
  2. 传输安全:Secure属性确保令牌仅通过HTTPS传输,不会在明文HTTP中泄露。
  3. 自动携带与低开发成本:Cookie会自动在同域请求中携带,前端无需手动处理令牌的存储、携带逻辑,减少出错概率。
  4. CSRF防护:SameSite=Strict配合CSRF令牌,能有效防范跨站请求伪造攻击。

对比其他两种方法的劣势:

  • 方法2:access_token存在localStorage中,完全暴露在XSS攻击下,一旦页面被注入恶意脚本,令牌会直接被窃取,风险极高。
  • 方法3:access_token设置长有效期,即使Cookie本身没过期,令牌已失效,但长有效期的令牌一旦泄露,危害时间窗口更长,不符合最小权限和短期令牌的安全原则。

问题3:更优的替代与改进方案

除了现有方法,以下方案能兼顾安全性和易用性:

优化版方法1(推荐)

  • 仅将refresh_token存入HttpOnly、Secure、SameSite=Strict的Cookie,access_token也用同样属性的Cookie存储,但设置极短的有效期(比如15-30分钟)。
  • 启用refresh_token轮换与哈希存储:后端不存储明文refresh_token,只存储其哈希值;每次刷新时,颁发新的refresh_token并替换旧的哈希记录,旧token立即失效。
  • 增加设备绑定:后端存储refresh_token时关联设备指纹(比如User-Agent哈希、浏览器特征等),校验时比对设备信息,异常情况直接吊销令牌。

SPA场景适配方案

对于单页应用,可以采用静默刷新机制:

  • 在页面中嵌入一个隐藏的iframe,指向后端的令牌刷新接口(同域),利用Cookie自动携带refresh_token完成刷新,新的access_token通过postMessage传递给主页面。
  • 这种方式无需跳转页面,用户无感知,同时保持令牌的安全存储。

令牌绑定技术

使用Token Binding(或类似的TLS绑定技术),将access_token和refresh_token与客户端的TLS会话绑定,即使令牌被窃取,攻击者也无法在其他会话中使用。

改进方法2的风险缓解(仅迫不得已时使用)

如果必须将access_token存在localStorage中:

  • 启用严格的内容安全策略(CSP),限制脚本的加载来源,减少XSS注入风险。
  • 设置access_token的超短有效期(比如5分钟),降低泄露后的危害。
  • refresh_token仍存入HttpOnly安全Cookie,后端存储其哈希值,避免明文泄露风险。

内容的提问来源于stack exchange,提问作者talpx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:17:44