保护React.js网络应用程序的Node.js REST API以及独立的API

时间:2019-07-09 14:55:32

标签: javascript node.js reactjs security jwt

我正在尝试为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,它将进行身份验证。用户直接与API进行交互时就是这种情况。
  • 如果只是CSRF令牌,我们将首先验证cookie中JWT的签名,然后将接收到的CSRF与cookie中的CSRF进行比较。如果它们匹配,它将进行身份验证。

我的想法是,通过这种方式,JWT永远不会暴露在Web应用程序上,从而不会发生任何攻击。

此模型看起来足够安全吗?

0 个答案:

没有答案