Я пытаюсь реализовать jwt в файлах cookie для аутентификации на одностраничном интерфейсе приложения, который взаимодействует с различными узлами микросервисов, работающих под управлением Express.
Я делаю это, так как хранение jwt в sessionstorage делает приложение уязвимым для XSS.
Однако при использовании файлов cookie API теперь уязвимы для атак csrf.
Традиционно атаки csrf смягчаются созданием токена csrf, сохранением его в сеансе сервера, а затем отображением в скрытом поле формы.
Затем при отправке формы значение токена csrf сверяется со значением сеанса сервера, чтобы проверить, совпадают ли они.
Я не могу использовать этот подход как:
- серверы не имеют состояния
- нет рендеринга на стороне сервера.
Так что я не понимаю, какой метод csrf мне следует использовать.
Я прочитал о двойном методе отправки, когда вы отправляете токен csrf при каждом запросе ajax и сохраняете одинаковое значение в cookie, а затем сервер проверяет оба на совпадение.
Тем не менее, я не могу вначале получить токен csrf в html, поскольку нет рендеринга на стороне сервера.
Какова наилучшая практика для достижения jwt в файлах cookie с защитой csrf в архитектуре без сохранения состояния без рендеринга на стороне сервера?