用途
该技能适用于以下场景:审查认证实现、搭建新的认证系统,或评估当前令牌存储方式是否暴露安全风险。它聚焦于前端认证令牌的存储位置与相关防护措施。
主要能力
- 快速参考:给出令牌存储与认证安全的关键原则。
- 检查(Check):判断认证令牌是存储在 httpOnly Cookie 中,还是存储在 localStorage 等 JavaScript 可访问的存储中;并验证 POST、PUT、PATCH、DELETE 请求是否也要求 CSRF 令牌或等效的防伪造控制。
- 修复(Fix):将令牌存储从 localStorage/sessionStorage 迁移到由服务器设置的 httpOnly Cookie,并确保 Cookie 带有 Secure 与 SameSite 标志;为所有依赖浏览器发送凭据的状态变更路由添加 CSRF 防护。
- 解释(Explain):说明 localStorage 为何易受 XSS 令牌窃取,以及 httpOnly Cookie 如何缓解该攻击向量。
- 代码审查(Code Review):审查认证流程、令牌存储调用与 API 客户端代码;标记使用 localStorage.setItem、sessionStorage.setItem 或 document.cookie 存储访问令牌、JWT 或会话标识符的写法;同时标记缺少 CSRF 令牌、Origin 检查或同站强制的带凭据变更请求。
核心原则
localStorage 可被页面上任何 JavaScript 访问。单个 XSS 漏洞——包括第三方脚本中的漏洞——即可静默窃取所有令牌。httpOnly Cookie 对 JavaScript 完全不可见;即使攻击者在页面上执行任意代码,也无法读取该 Cookie。这一架构选择可消除最常见的令牌窃取途径。
快速参考要点
- 将会话令牌与 JWT 存储在 httpOnly Cookie 中,而非 localStorage。
- localStorage 可被页面上任何 JavaScript 读取,包括注入的 XSS 代码。
- 将 httpOnly 与 Secure 和 SameSite=Strict(或 Lax)Cookie 标志结合使用。
- 使用短期访问令牌,并在每次使用时轮换刷新令牌。
- 用 CSRF 防护保护每一个状态变更请求,而不仅仅依赖 Cookie 标志。
使用方式
按检查、修复、解释、代码审查四个环节使用。完整实现细节、代码示例与框架特定指引见 references/rule.md。规则页面:https://frontendchecklist.io/rules/security/token-storage-security
适用场景
- 新认证系统的存储方案设计。
- 现有认证实现的令牌存储安全审查。
- 前端代码中令牌存储与 CSRF 防护的代码审查。
限制
资料未提供具体框架实现代码、价格、平台支持范围等信息,暂未提供。