@MaintstDev
Python | Vue

Где нужно хранить JWT-токен? Почему возникают разные мнения?

Начал делать новое приложение, связка: Vue + Django.
Дошло дело до авторизации, но тут появился вопрос: Одни ресурсы уверяют в том, что токен нужно держать в localstorage, но другие настоятельно отзывают от хранения в localstorage и рекомендуют держать его в куках, ибо xss и т.д

Какой же вариант выйдет безопаснее? Где можно найти эталонную реализацию безопасного варианта?
  • Вопрос задан
  • 860 просмотров
Решения вопроса 2
@OneFive
React.js <3
К localstorage имеют доступ все скрипты на странице включая расширения браузера, это значит что токен могут украсть: скрипты подключенные на сайте, через xss иньекции, расширения в браузере. К httpOnly кукам имеет доступ только девтулзы браузера и бек, в итоге украсть токен на клиенте в таком случае невозможно, если только самом не получить доступ к компьютеру. К тому же куки могут распространяться на поддоменты в отличии от localstorage.
Ответ написан
Если у вас есть внешние скрипты подключаемые с cdn - то хранить что-то в localstorage не безопасно.

Вообще говоря у jelwt два токена - короткоживущие access token и и длительный refresh token

Refresh token можно хранить в куках, так чтобы к нему не было доступа со стороны js, а с access token, к которому будет доступ из js в localstorage.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Если кука не httpOnly, то рискну предположить, что разницы нет.
Ответ написан
petermzg
@petermzg
Самый лучший программист
А для какой цели нужен JWT-токен на клиенте?
Он ведь важен для сервера, а значит с запросом вам его придется передавать.
А тут уже варианты: Header (в том числе Cookies) или тело запроса. Места для localstorage нет.
И браузер из всего указанного умеет хранить только Cookies, так что вариантов нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы