Где я должен сохранить JWT клиента для будущих запросов?

#node.js #security #jwt #token #bearer-token

#node.js #Безопасность #jwt #токен #токен на предъявителя

Вопрос:

Мой API возвращает токен клиенту при выполнении входа в систему, который, в свою очередь, требует, чтобы клиент каждый раз помещал его в заголовок для отправки запроса на сервер. Где я должен сохранить эти токены? Если сохранено в хранилище браузера, то любой может скопировать и войти в учетную запись клиента

Ответ №1:

Вы правы. Хранить его в локальном хранилище небезопасно.

JWT должен храниться внутри файла cookie HttpOnly, особого вида файла cookie, который отправляется только в HTTP-запросах на сервер, и он никогда не доступен (как для чтения, так и для записи) из JavaScript, запущенного в браузере.

Вы можете прочитать больше об этом в этой статье о лучших практиках JWT. https://logrocket.com/blog/jwt-authentication-best-practices /

Комментарии:

1. Но javascript не может читать localStorage других источников, не так ли? Итак, за исключением XSS, должно быть безопасно разрешить JS читать / записывать токен?

2. Сказать «сохранить для XSS» — все равно что сказать «за исключением случаев, когда ваша личность взломана». XSS вызывает серьезную озабоченность, и поэтому использование файлов cookie только для HTTP является лучшей практикой.

3. @drdwilcox: да, с другой стороны, я склонен согласиться.