来自 Auth0 的这篇文章建议将 JWT 本地存储在本地存储(或 cookie)中。但是OWASP 的这篇文章建议不要在本地存储任何敏感数据(甚至是 sessionStorage)
那么,在本地存储 JWT 令牌是否安全?
来自 Auth0 的这篇文章建议将 JWT 本地存储在本地存储(或 cookie)中。但是OWASP 的这篇文章建议不要在本地存储任何敏感数据(甚至是 sessionStorage)
那么,在本地存储 JWT 令牌是否安全?
多么奇怪!大约一个月前,我问了基本相同的问题。
最后,我们决定为 JWT 令牌使用 localstorage 是可以的,只要我们还在 HTTP 级别上执行以下操作:
localhost:4200
以上将在securityheaders.io上为您提供 A/A+ ,并将防止最常见的攻击(例如,有人将您的网站嵌入 iframe,并从本地存储中提取数据)。
这要看情况。如果您的应用程序中存在 XSS 漏洞,攻击者可以从您的本地存储中提取和使用 JWT。
我使用过的一种方法,我认为 Auth0 指示是使用 cookie 作为 JWT 存储并使用标志HTTP Only 和 Secure如果您有 XSS 漏洞,则无法读取 cookie,只能以安全方式传输。如今,CSRF 的风险较小,因为所有现代框架都包含 CSRF 缓解措施。
这意味着验证从服务器端的 cookie 中提取 JWT 以进行验证。我个人的观点是使用 cookie 作为存储,因为与具有较大攻击面的 XSS 攻击相比,CSRF 更容易找到和缓解。