将CSRF令牌公开给客户端

时间:2018-12-25 10:37:56

标签: node.js csrf csrf-protection

我有一个包含两个部分的Web应用程序:

  1. app-front React应用程序,该应用程序已部署在AWS CloudFront中,可通过app-example.com获得
  2. app-api Node.js + Koa应用程序,该应用程序部署在EC2实例中(在负载均衡器之后),并且可以通过api.app-example.com获得

app-api具有CSRF保护,它在用户会话中使用秘密密钥,并在服务器端使用已验证的令牌。 (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Synchronizer_Token_Pattern

app-api如何将CSRF令牌公开给app-front

有几种方法:

  1. 在html页面中包含令牌:

    <meta name="csrf-token" content="{{csrfToken}}">

但是该方法对我不起作用,因为app-api不提供html页面(位于AWS CloudFront中的app-front

  1. 通过AJAX在cookie中设置CSRF令牌

    server.get('/csrf', (req, res) => { res.cookie('_csrf' , res.locals._csrf, {expire : new Date() + 9999}); return res.json({ "status": "success" }) })

但这是我要避免的另一项要求。

也许还有其他解决方案?

0 个答案:

没有答案