JWT存localStorage?XSS一攻即破
What's the best way to do authentication in modern applications

问十个前端开发者该把登录Token存在哪,你会得到四种答案和一场争吵。很多教程都教你把JWT塞进localStorage,但这简直是给XSS攻击者递钥匙。一旦攻击者注入脚本,就能轻松窃取Token,拿着它就能冒充你在全球任意地点操作,直到Token过期。内存存储虽然稍好,但刷新页面就失效,且攻击者仍能拦截。真正的解法是使用HttpOnly Cookie,让JavaScript完全无法读取Token。这样即使发生XSS,攻击者也无法带走凭证,只能在你浏览器打开时有限地作恶。别再让教程误导你,把Token交给浏览器自动管理才是正解。
"如果攻击者能读取Token,他们就能把它带回家;如果读不到,他们就只能在你浏览器打开时趁火打劫。"