Angular 2/4 存储令牌的位置

2024-04-30

我有一个用于生成令牌的 REST API,我在 Angular 4 客户端中使用它,但问题是在哪里存储该令牌。

在互联网上我发现我可以存储在本地存储或cookie中。

所以我的问题是,如果存储令牌是本地存储,并且我刚刚从另一个浏览器复制了有效令牌,那么我将拥有一个有效令牌,因此像这样存储令牌有任何安全性,并且基本上相同与cookies,或者也许我错过了一些重要信息?


这是一篇关于令牌/Cookie 的完整文章,可以为您提供有关此主题的大量知识:auth0:Cookie VS 令牌 https://auth0.com/blog/cookies-vs-tokens-definitive-guide/

我将引用最重要的部分,以便您了解接下来会发生什么:

网站面临的两个最常见的攻击媒介是跨站脚本 (XSS) 和跨站请求伪造(XSRF 或 CSRF)。

当外部实体能够在您的网站或应用程序中执行代码时,就会发生跨站点脚本攻击。

如果您将 JWT 与本地存储结合使用,跨站点请求伪造攻击就不是问题。另一方面,如果您的用例要求您将 JWT 存储在 cookie 中,您将需要防范 XSRF。

我们的首席技术官过去曾表示,与 XSRF 攻击相比,XSS 攻击更容易处理,因为它们通常更容易被理解。

所以基本上总结一下:

  • XSS攻击是一个问题Tokens and 本地存储。但这并不是因为 Angular 可以清理所有内容,有效防止XSS攻击。 (https://angular.io/guide/security#angulars-cross-site-scripting-security-model https://angular.io/guide/security#angulars-cross-site-scripting-security-model)
  • XSRF攻击是一个问题Cookies,并且您必须建立自己的安全框架来处理它们。

因此,我建议使用标准 JWT 令牌方法来管理您的令牌。由于您的令牌是用JWT格式,我认为这是最安全的解决方案。当然,标准令牌需要是加密的 or signed(不一样)要真正安全。

使用适当的库(例如https://github.com/auth0/angular2-jwt https://github.com/auth0/angular2-jwt)


更进一步:我想您的令牌将用于身份验证,并且要注意人们已经使用过它并且知道使用它们的好/坏做法。

您应该看看如何从他们使用的工作网站(例如 Twitter / Facebook 等)管理身份验证刷新令牌。以下是您可能感兴趣的一些其他链接:

  • https://auth0.com/learn/refresh-tokens/ https://auth0.com/learn/refresh-tokens/
  • https://auth0.com/docs/tokens/refresh-token/current https://auth0.com/docs/tokens/refresh-token/current

EDIT :有关 JWT 最佳实践的其他链接:

  • https://dev.to/neilmadden/7-best-practices-for-json-web-tokens https://dev.to/neilmadden/7-best-practices-for-json-web-tokens(第 6 部分和第 7 部分)

  • https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2/4 存储令牌的位置 的相关文章