反应前端和REST API,CSRF

使用REST API作为后端,由JWT授权反应前端,但如何处理会话?例如,在登录后我从REST获取JWT令牌,如果我将其保存到localStorage我很容易受到XSS的攻击,如果我将它保存到Cookies,只有在没有设置HttpOnly时才会出现同样的问题,但是反应无法读取HttpOnly Cookies(我需要)读取cookie从中获取jwt,并使用此jwt与休息请求),我也没有提到CSRF问题,如果你使用REST作为后端,则不能使用CSRF令牌.

因此,与REST的React似乎是不好的解决方案,我需要重新思考我的架构,如何成为?是否有可能为您的用户提供安全的响应应用程序,哪些业务逻辑在REST API端处理,而不必担心丢失数据?

更新:

据我所知,有可能这样做:

> React对REST API进行AJAX调用
> React从REST获取JWT令牌
> React写入httponly cookie
>因为react无法读取httponly cookie,我们在需要身份验证的所有REST调用中按原样使用它
> REST on calls检查XMLHttpRequest标头,什么是CSRF保护
> REST端检查cookie,从中读取JWT并执行操作

我在这里缺乏理论知识,但看起来很逻辑且相当安全,但我仍然需要回答我的问题并批准这个“工作流程”.

最佳答案
  1. React makes AJAX call to REST API

保证,有很多宁静的资源客户端库可用

  1. React gets JWT token from REST

保证,这是JWT应该做的

  1. React writes httponly cookie

我不这么认为,它不应该工作,但会话不是那么重要的事情,它很快就会过时,并重新检查密钥操作的密码,即使是黑客在很短的时间内得到它,你可以用户登录时将会话令牌与IP绑定在一起,并在后端apis中进行检查.如果您希望它最安全,只需将令牌保留在内存中,并在打开新页面或页面刷新时重做登录

  1. Because react can’t read httponly cookie, we use it as-is in our all REST call where we need authentication

保证,通过登录令牌检查用户和权限,如csrf,您可以将您的登录令牌放入您的请求标头,并在您的后端apis中检查它.
将登录令牌绑定到您自己的restful lib将为您节省大量代码

  1. REST on calls checks XMLHttpRequest header, what is some kind of CSRF protection
    REST side check for cookie, read JWT from it and do stuff

像大多数人一样保证.
此外,将csrf令牌绑定到您自己的restful lib将为您节省大量代码

在标头https://www.npmjs.com/package/express-jwt-token中使用用户令牌
授权JWT< jwt token>

在标头https://github.com/expressjs/csurf中使用csrf标记
req.headers [‘csrf-token’] – CSRF-Token HTTP请求头.

宁静的客户https://github.com/cujojs/rest

与jwt https://github.com/joshgeller/react-redux-jwt-auth-example做出反应

转载注明原文:反应前端和REST API,CSRF - 代码日志