OpenID Connect 登录后如何在 Vue 中安全存储 ID Token?

东方云超 阅读 5

我用 OpenID Connect 接入了公司的统一认证,登录成功后拿到了 ID Token,但不确定该存 localStorage 还是 sessionStorage,听说都有安全风险?

现在我是这样存的,但担心被 XSS 攻击偷走:

<script setup>
import { useAuthStore } from '@/stores/auth'

const handleLoginSuccess = (response) => {
  const { id_token } = response
  // 直接存 localStorage,是不是太危险了?
  localStorage.setItem('id_token', id_token)
  useAuthStore().setToken(id_token)
}
</script>
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
a'ゞ蒙蒙
ID Token 别存 localStorage,XSS 脚本能直接读取。改成存 sessionStorage,关闭标签页自动失效:

const handleLoginSuccess = (response) => {
const { id_token } = response
sessionStorage.setItem('id_token', id_token)
useAuthStore().setToken(id_token)
}


但 sessionStorage 依然防不住 XSS。真正安全的做法是后端用 HttpOnly Cookie 存 token,前端根本不碰 token,只通过 Cookie 自动认证。
点赞
2026-03-17 13:07