Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Где хранить токен без Backend?

Kredwi Мыслитель (7901), открыт 1 неделю назад
Чтобы пользователь не мог его узнать
1 ответ
frontDev Профи (940) 1 неделю назад
Существует несколько вариантов безопасного хранения токенов без использования бэкэнда, но каждый из них имеет некоторые ограничения:
  • Локальное хранилище: токены могут храниться в localStorage или IndexedDB, которые доступны только для исходного сайта. Однако эти механизмы хранения в конечном итоге находятся под контролем пользователя через его браузер. Опытный пользователь может просмотреть и извлечь любые токены.
  • Файлы cookie только для HTTP: установка флага HttpOnly при установке файла cookie из серверной части предотвращает доступ клиентского JavaScript к файлу cookie, что повышает безопасность. Однако для первоначальной установки файла cookie по-прежнему требуется участие серверной части.
  • Шифрование: токен может быть зашифрован на стороне клиента перед сохранением в локальном хранилище или в файле cookie. Но это не мешает пользователю извлекать и расшифровывать данные, если у них есть ключ шифрования. Это только скрывает содержимое токена.
  • Обфускация: значение токена может быть запутано в коде на стороне клиента, но не зашифровано, чтобы сделать его нечитаемым для человека в случае извлечения. Но решительный пользователь все равно сможет его расшифровать.

В общем, безопасное хранение токенов аутентификации полностью на стороне клиента без какого-либо взаимодействия с серверной частью не считается безопасным, поскольку пользователь полностью контролирует свой собственный браузер. Лучшим подходом было бы использовать серверную часть, хотя бы в минимальной степени, для первоначальной установки механизма безопасного хранения, такого как файл cookie только для HTTP. Это предотвращает прямой доступ к токену на стороне клиента.
Похожие вопросы