У меня есть веб-приложение, состоящее из двух частей:
app-front
Реагирует на приложение, развернутое в 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-страниц (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"
})
})
Но это дополнительный запрос, который я бы хотел избежать.
Может быть, есть другое решение?