#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: да, с другой стороны, я склонен согласиться.