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

存储Access Token与Refresh Token的最佳实践方案咨询

第三方认证令牌存储的最佳实践(Angular + Node.js架构)

核心结论

绝对不要把第三方返回的Access Token和Refresh Token传到UI端存储——不管是localStorage、sessionStorage还是会话Cookie,都没必要且风险极高。你的场景里UI完全不需要接触这些令牌,所有第三方交互都由后端处理,最优方案是后端加密存储令牌到数据库。


为什么不能传到UI存储?

  • XSS攻击风险:前端存储的任何数据都可能被跨站脚本攻击窃取。一旦攻击者拿到第三方令牌,就能直接以用户身份调用第三方API,泄露敏感数据或执行未授权操作。
  • 冗余且无意义:你的业务逻辑里UI不需要用这些令牌做任何操作,完全没必要把敏感数据暴露在前端层面。

后端加密存储的具体实现要点

  1. 加密存储令牌

    • 用强对称加密算法(如AES-256-GCM)加密令牌后再存入数据库,避免数据库被攻破后令牌直接泄露。
    • 加密密钥要存在环境变量中(cPanel可以通过“环境变量”配置面板或.env文件设置,注意.env文件绝对不能提交到版本控制系统),绝对不能硬编码在代码里。
  2. 数据库存储结构
    给每个用户关联存储以下信息:

    • 用户ID(关联你的系统用户)
    • 加密后的Access Token
    • 加密后的Refresh Token
    • Access Token过期时间
    • Refresh Token过期时间
  3. 自动刷新令牌逻辑

    • 后端每次调用第三方API前,先检查Access Token是否过期。
    • 若过期,用存储的Refresh Token调用第三方的刷新接口,获取新的Access Token和Refresh Token,更新数据库中的记录,全程对UI透明。
  4. cPanel部署的安全注意事项

    • 限制数据库的访问权限:只允许你的Node.js后端服务的IP访问数据库,禁止外部公网直接访问。
    • 确保Node.js服务的运行环境安全,及时更新依赖包,避免漏洞被利用。

额外安全优化建议

  • 你的系统自身的用户会话,用HttpOnly、Secure、SameSite=Strict的Cookie来管理,和第三方令牌完全隔离。UI只需要这个会话标识来和后端交互,不需要知道任何第三方认证细节。
  • 如果第三方API支持,请求令牌时尽量限制权限范围(比如scope参数),即使令牌泄露,攻击者也只能访问必要的资源,降低风险。
  • 定期轮换加密密钥,密钥泄露的风险会随时间增加,定期轮换能减少影响范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:22:34