通过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
我不这样认为,它不应该起作用,但是会话并不是那么重要,它很快就会过时,并重新检查关键操作的密码,即使黑客在很短的时间内就获得了密码,您也可以用户登录时将会话令牌与IP绑定在一起,并在您的后端api中进行检查。如果您希望最安全,只需将令牌保存在内存中,然后在打开新页面或刷新页面时重做登录
- 由于react无法读取httponly cookie,因此我们在需要身份验证的所有REST调用中按原样使用它
请放心,通过登录令牌(例如csrf)检查用户和权限,您可以将登录令牌放入请求标头,然后在后端api中进行检查。将登录令牌绑定到您自己的Restful lib将为您节省很多代码
- 调用时的REST检查XMLHttpRequest标头,CSRF保护的某种形式是REST端检查cookie,从中读取JWT并进行处理
像大多数人一样放心。另外,将csrf令牌绑定到您自己的静态lib将为您节省很多代码
在标题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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句