我正在尝试为Node.js REST API创建一种安全的身份验证方法,该方法既适用于直接API请求也适用于我的React.js Web应用程序。我已经阅读了一些有关如何正确存储身份验证令牌以防止XSS和CSRF的内容,因此,我想介绍一下我想出的内容,看看其中是否有任何漏洞,或者它是否可以正常工作。全部。
此方法将结合使用JWT,localstorage(React应用程序)和cookie(Node API)。
API具有端点/authentication
。调用时,它将生成CSRF令牌并将其包含在JWT的有效负载中。然后它将通过JWT设置cookie(HttpOnly,安全),并返回所说的JWT。
从我的React.js Web应用程序调用{{1}}时,它将接收JWT,并将CSRF令牌仅存储在本地存储中。
然后,每当应用程序需要从API获取资源时,它将在每个请求的标头中发送CSRF令牌。
Node.js应用程序将具有一个检查以下内容的中间件:
我的想法是,通过这种方式,JWT永远不会暴露在Web应用程序上,从而不会发生任何攻击。
此模型看起来足够安全吗?