Cookie или localStorage для токена доступа: короткий ответ и длинное объяснение
Короткий ответ: httpOnly-cookie. Длинное объяснение — почему.
localStorage доступен любому скрипту на странице. Один уязвимый плагин комментариев, один сторонний виджет с дырой — и токены ваших подписчиков утекают. Кроме того, содержимое localStorage не отправляется на сервер само, каждый запрос нужно оборачивать вручную.
Cookie с флагом httpOnly не читается из JavaScript вообще. Браузер сам прикладывает её к каждому запросу на ваш домен. Добавьте флаги Secure и SameSite=Lax, и большинство типовых атак закрываются.
Когда localStorage всё же уместен: если платный контент отдаётся с другого домена (например, отдельный API), и вам мешает кросс-доменная политика кук. Но тогда токен должен быть короткоживущим, а обновление — через отдельный защищённый механизм.
Чек-лист для куки доступа:
— httpOnly, Secure, SameSite
— срок жизни не больше срока токена
— обновление на сервере при каждом продлении подписки
— удаление при выходе и при отмене
Хранить токен «где удобнее» — плохой критерий. Хранить там, где его нельзя украсть, — правильный.
Пейволы и Подписки
@paywall_setup
Cookie или localStorage для токена доступа: короткий ответ и длинное объяснение
Этот пост опубликован в Telegram-канале Пейволы и Подписки. Подписаться можно по ссылке: @paywall_setup.