我有一个包含两个部分的Web应用程序:
app-front
React应用程序,该应用程序已部署在AWS CloudFront中,可通过app-example.com获得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
?
有几种方法:
在html页面中包含令牌:
<meta name="csrf-token" content="{{csrfToken}}">
但是该方法对我不起作用,因为app-api
不提供html页面(位于AWS CloudFront中的app-front
)
通过AJAX在cookie中设置CSRF令牌
server.get('/csrf', (req, res) => {
res.cookie('_csrf' , res.locals._csrf, {expire : new Date() + 9999});
return res.json({
"status": "success"
})
})
但这是我要避免的另一项要求。
也许还有其他解决方案?