在基于Web浏览器的客户端上哪里存储授权(或JWT)令牌?

问题描述 投票:0回答:1

问题仍然存在,我们必须在哪里存储JWT令牌,以便来自Javascript的AJAX请求可以在Authorization标头中使用它们。我看了以下资源。有些建议使用SessionStorage或LocalStorage,有些则建议使用不安全,但也不建议使用其他方法。另外,有些(链接3)建议将其存储为httpOnly cookie,这显然不是单页应用程序的解决方案。因此,如果我们将它们存储为non httpOnly cookie,则其与localStorage几乎相同。

  1. How do I store JWT and send them with every request using react

  2. 请停止使用本地存储(https://dev.to/rdegges/please-stop-using-local-storage-1i04

  3. https://blog.logrocket.com/jwt-authentication-best-practices/

我知道可能没有针对此问题的特定解决方案,但是在生产环境中使用的解决此问题的策略可能会有所帮助。

reactjs cookies jwt authorization single-page-application
1个回答
0
投票

由于安全是您的首要考虑因素,因此答案相对简单:您无法将JWT作为授权标头提供给服务器端应用程序。为此,将需要使用可访问Javascript的对象,这意味着JWT面临XSS攻击的风险。

当前唯一可用的安全方法是通过服务器应用程序生成该令牌,然后通过httpOnly安全cookie将其提供给客户端SPA。可以说,此cookie现在可能容易受到CSRF的攻击,但是,与XSS相比,它的风险较小。

随着每个后续的AJAX请求,该cookie将由浏览器自动提供。您的服务器应用程序(或应用程序服务器)也必须配置为通过该特定cookie接受JWT。

此技术适用于任何寻求保护对服务器端资源的请求的应用程序-单页应用程序或其他应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.