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