在前端使用 React 和 RESTful API 作为后端并通过 JSON Web Token (JWT) 进行授权,我们如何处理会话?例如,登录后,我从 REST 获取 JWT 令牌。如果我将它保存到 localStorage 我很容易受到 XSS 的攻击,如果我将它保存到 cookie,除了我将 cookie 设置为 HttpOnly 之外,同样的问题,但 React 无法读取 HttpOnly Cookie(我需要读取 cookie 以从中获取 JWT,并使用这个带有 REST 请求的 JWT),我也没有提到跨站点请求伪造(CSRF)问题。如果您使用 REST 作为后端,则不能使用 CSRF 令牌。
因此,React with REST 似乎是一个糟糕的解决方案,我需要重新考虑我的架构。是否有可能为您的用户提供一个安全的 React 应用程序来处理 REST API 端的所有业务逻辑,而不必担心丢失他们的数据?
更新:
据我了解,可以这样做:
- React 对 REST API 进行 AJAX 调用
- React 从 REST API 获取 JWT 令牌
- React 写入 HttpOnly cookie
- 因为 React 无法读取 HttpOnly cookie,所以我们在需要身份验证的所有 REST 调用中按原样使用它
- REST API 调用检查 XMLHttpRequest 标头,这是某种 CSRF 保护
- REST API 端检查 cookie,从中读取 JWT 并执行操作
我这里缺乏理论知识。逻辑看起来很安全,但我仍然需要回答我的问题并批准这个“工作流程”。