前端用JWT时,如何防止Token被XSS攻击窃取?
我在项目里用localStorage存JWT token,但同事说这样容易被XSS攻击,我试过把token加密存进去,但后端验证时解密失败了。现在改成用httpOnly的cookie,但axios发请求时又拿不到cookie…
具体操作是这样的:localStorage.setItem('token', encrypt(jwt)),后端用同样的密钥解密时总报错。改成cookie后,虽然设置了withCredentials: true,但跨域请求时后端还是收不到cookie,控制台提示”Blocked cross-site access”
现在卡在两种方案都通不过,有没有更好的存储方式?或者需要同时调整前后端哪些配置才能安全传输token?
后端设Set-Cookie: token=xxx; HttpOnly; Secure; SameSite=Strict; Path=/,跨域接口Access-Control-Allow-Origin写具体域名,加Access-Control-Allow-Credentials: true。