React SPA with Express Backend API - 将 JWT 存储在本地存储中并限制 API 仅访问 SPA 的 Web 服务器 IP

React SPA with Express Backend API - Storing JWT in localstorage and limiting API access to SPA's web server IP only

我正在从事一个项目,该项目涉及使用 React 构建的 SPA Web 应用程序,连接到运行 Express 的 API。

我阅读了很多关于 Whosebug 的文章和问题。 (特别是这个 有一个非常详细的答案)。但是,有一点我无法理解。我搜索了问题,但找不到任何包含后端 API 端 IP 限制的答案。

我想将 JWT 发送给从 SPA 登录的授权用户,并将 JWT 存储在客户端的本地存储中。后端 API 只能从 SPA 的 IP 地址访问,并且对任何其他 IP 都是关闭的。 CORS 也将配置为仅与 SPA 域名一起使用。

所以考虑到这个配置,将 JWT 存储在 localstorage 中仍然不安全吗?由于API仍然只能被一个IP访问,那么攻击者通过XSS攻击获取到的access Token如何使用呢?

为了访问服务器可以应用几种攻击:

  1. Ip spoofing
  2. SSRF
  3. ip校验漏洞,想到需要校验ip,ip有很多种形式,ipv4,ipv6,hex,oct等...
  4. 防火墙/反向代理漏洞

最佳实践旨在避免错误,请遵循它们。

顺便说一句,我总是推荐 this article 来理解 JTW 验证。 (我在阅读后更改了我的应用程序实现:))