React前端和REST API,CSRF
通过RESTful
API在前端使用React作为JWT的后端和授权,我们如何处理会话?例如,登录后,我从REST获得了JWT令牌。如果将其保存到localStorage中,我很容易受到XSS的攻击,如果将其保存到cookie中,除了将cookie设置为HttpOnly之外,其他问题相同,但是React无法读取HttpOnly
Cookies(我需要读取cookie来从其中获取JWT并使用这个带有REST请求的JWT),我也没有提到CSRF问题。如果您使用REST作为后端,则不能使用CSRF令牌。
结果,React with
REST似乎是一个糟糕的解决方案,我需要重新考虑我的架构。是否可以为您的用户提供一个安全的React应用程序,该应用程序可以处理REST
API方面的所有业务逻辑,而不必担心丢失其数据?
据我了解,可以这样做:
- React使AJAX调用REST API
- React从REST获取JWT令牌
- React写HttpOnly cookie
- 由于React无法读取HttpOnly cookie,因此我们在需要身份验证的所有REST调用中按原样使用它
- REST调用检查XMLHttpRequest标头,这是一种CSRF保护
- REST端检查cookie,从中读取JWT并进行处理
我在这里缺乏理论知识,但是逻辑看起来很安全,但是我仍然需要回答我的问题并批准这个“工作流程”。
回答:
- React使AJAX调用REST API
可以放心,有很多可使用的宁静资源客户端库
- React从REST获取JWT令牌
放心,这是智威汤逊应该做的
- React写httponly cookie
我不这样认为,它不应该起作用,但是会话并不是那么重要,它将很快过时,并重新检查关键操作的密码,即使黑客在很短的时间内就获得了密码,您也可以用户登录时将会话令牌与IP绑定在一起,并在您的后端api中进行检查。如果您希望最安全,则只需将令牌保存在内存中,然后在打开新页面或刷新页面时重新登录
- 由于react无法读取httponly cookie,因此我们在需要身份验证的所有REST调用中按原样使用它
请放心,通过登录令牌(例如csrf)检查用户和权限,您可以将登录令牌放入请求标头中,然后在后端api中进行检查。将登录令牌绑定到您自己的Restful
lib将为您节省很多代码
- 调用时的REST检查XMLHttpRequest标头,CSRF保护的某种形式REST端检查cookie,从中读取JWT并进行处理
像大多数人一样放心。另外,将csrf令牌绑定到您自己的Rest库将为您节省很多代码
在标题https://www.npmjs.com/package/express-jwt-
token中使用用户令牌 Authorization
JWT < jwt token >
在标题https://github.com/expressjs/csurf中使用csrf令牌
req.headers['csrf-token'] - the CSRF-Token HTTP request header.
宁静的客户端https://github.com/cujojs/rest
与jwt反应https://github.com/joshgeller/react-redux-jwt-auth-
example
以上是 React前端和REST API,CSRF 的全部内容, 来源链接: utcz.com/qa/423241.html