Есть ли какая-то выгода для хранения JWT как в cookie, так и в локальном хранилище? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь написать систему аутентификации для api node.js с использованием Express.Я заметил, что если я собираюсь использовать JWT для токенов аутентификации, у меня есть два варианта ...

1.) Сохраните токен в cookie и добавьте защиту CSRF.2.) Пусть клиент отправит токен в заголовке аутентификации и добавит защиту XSS.

Мой вопрос заключается в том, есть ли какая-то польза от сохранения токена аутентификации в cookie-файле и для того, чтобы клиент отправил его в заголовок аутентификации для аутентификации?Таким образом, если по какой-то причине защита CSRF не будет выполнена, запрос завершится ошибкой, если в заголовке не будет токена аутентификации.Кроме того, если защита XSS не будет выполнена, для запроса все равно потребуется маркер аутентификации в файле cookie.Я думаю, что я думаю, что это обеспечит большую защиту, и единственный способ, которым он может потерпеть неудачу, - это успешная атака XSS, за которой следует успешная атака CSRF.

Дополнительный вопрос: действительно ли токены CSRF являются полностью защищенной техникой от атак CSRF?

1 Ответ

0 голосов
/ 29 января 2019

Во-первых, я рекомендую сначала пройти этот ответ.Я надеюсь, что смогу ответить на ваши вопросы о CSRF и XSS, а также о том, почему и как мы должны использовать cookie.

Во-вторых, ваш подход к использованию localalstorage вместе с cookie-файлами хорош.Единственная проблема, которую я вижу, заключается в том, что локальное хранилище не может быть использовано в поддоменах.Если вы используете cookie и задаете домен cookie как example.com (замените пример доменом вашей организации), он будет действителен во всех поддоменах.Таким образом, пользователь, аутентифицированный вашим сервером авторизации, может без проблем войти в app1.example.com и app2.example.com.Вы не сможете сделать это с помощью localalstorage.

...