前端的 token 应该存在哪里呢,以及存放位置带来的风险与防范

465 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

总结

反正是服务端加密的传过来让前端存着的,

通常的存储都可以放,只不过需要防范攻击就是了

风险

放在 webStorage 里的话,因为同源策略,可以在当前页面中注入脚本进行 xss 攻击来获取信息。比如在一个帖子下面回复了一串 js 脚本代码。 <script>report(document.cookie)</script>,如果网站没有对留言内容进行输出转义,就会被注入脚本。 如果做了输出转义,那那些符号都会变成转义字符。这样就能防范了,目前 react 等主流的框架都默认帮我们进行了转义输出。

放在 cookie 里且设置 httponly 也可以防范 xss 攻击,但还有一个 csrf 攻击不要忘了,可以生成一个伪随机数放在请求中来防范。

如果攻击者能够拿到用户的JWT token,就可以通过伪造该用户的请求来假冒该用户。因此,确保JWT token的安全性非常重要。

以下是保障JWT token安全的一些方法:

  1. 使用HTTPS协议传输数据,以保障数据传输的安全性。

  2. 通过设置短暂有效期来减少JWT token被盗用的风险。

  3. 将JWT token存储在HttpOnly Cookie中,以防止XSS攻击窃取JWT token。

  4. 使用签名来验证JWT token的完整性,以防止攻击者篡改JWT token。

  5. 避免在JWT token中包含敏感信息,例如用户的密码。

  6. 使用多因素身份验证等措施来提高账户的安全性。

尽管采取了以上措施,JWT token仍然存在被攻击、盗取和篡改的风险,因此,在实施JWT身份验证时,必须全面考虑安全风险,同时合理运用多种安全防御措施。

攻击

xss 攻击是注入脚本窃取信息。 csrf 攻击是跨站请求伪造。