Задать вопрос
@Meised

Кто должен устанавливать cookie, клиент или сервер?

При входе пользователя генерируется jwt токен с id юзера. По началу я устанавливал куки и помещал в них токен на стороне бекенда, так-же удалял куки, с этим способом возникли некоторые проблемы. Работаю вместе с другом фронтендером который писал несколько сайтов, и даже не знал что куки могут устанавливатся на стороне бека, всегда устанавливал их на клиентской стороне. Как я знаю если устанавливать куки на клиентской стороне это делает сайт более уязвимым к XSS атакам. Но подозреваю что эта проблема решаема, как минимум частично. Так что же лучше, устанавливать куки стороне клиента или сервере?
  • Вопрос задан
  • 256 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
1. Клиент - ваш враг! Это единственно-верный подход при разработке web-сервисов. У клиента может быть дырявый древний браузер насквозь пробитый вирусами и вредоносными расширениями. Ваша задача - максимально обезопасить и сервер и бедного юзверя от этой гадости.

2. Поэтому лучше всего генерировать куку на сервере. И не простую, а минимум:
  • HttpOnly
  • Secure
  • SameSite=lax


3. Приложите уникальный CSRF-токен, и спите относительно спокойно.

4. Если же вашему JavaScript ну очень нужна именно в куке какая-то дополнительная информация, не содержащая критических защищённых данных, то можете установить вторую куку откуда угодно. Но эти данные также надо считать вражескими и везде перепроверять.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Refguser
Решения для бизнеса: корп.сайты, ИМ и пр.
spoiler
Нда, так путать тёплое с мягким.... бекэнд/фронт с технологией клиент-сервер.. надо постараться.


Куки устанавливает сервер. На клиенте (если клиент позволит).
Кука может генериться как фронтом(точнее тем, что ты имеешь ввиду под этим), так и беком - это вообще клиенту без разницы.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
это делает сайт более уязвимым к XSS атакам.
Нет, скорее это наносит больший ущерб в случае удачной атаки, к самой защите от атак это никак не относится.

Так что же лучше, устанавливать куки стороне клиента или сервере?
Что лучше, мягкое или теплое? Разные куки подходят для разных задач. Если речь все еще про токены и авторизацию - только бэкенд.

По началу я устанавливал куки и помещал в них токен на стороне бекенда, так-же удалял куки, с этим способом возникли некоторые проблемы.
Некоторые проблемы очевидно решаются, судя по тому что миллионы программистов с этим как-то справляются. Очевидно надо искать как решаются типовые задачи вместо поиска черных костылей в темной комнате.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы