Предоставить токены CSRF клиентской стороне - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть веб-приложение, состоящее из двух частей:

  1. app-front Реагирует на приложение, развернутое в 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-страниц (app-front находится вAWS CloudFront)

Установить токены CSRF в файлах cookie через AJAX

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

Но это дополнительный запрос, который я бы хотел избежать.

Может быть, есть другое решение?

...