Credentials лучше хранить в localStorage или в cookie

Ответ

Хранение credentials зависит от требований безопасности и использования:

Cookie (предпочтительно для аутентификации):

  • HttpOnly флаг защищает от XSS
  • Secure флаг для HTTPS
  • SameSite для CSRF защиты
  • Автоматически отправляются с запросами
// Установка secure cookie
document.cookie = `token=${token}; Secure; HttpOnly; SameSite=Strict; path=/`;

LocalStorage:

  • Уязвим к XSS
  • Не отправляется автоматически
  • Подходит для нечувствительных данных
  • Больший размер хранения

Лучшая практика:

  • Токены аутентификации - только в HttpOnly cookies
  • LocalStorage - для клиентских настроек
  • Всегда использовать HTTPS
  • JWT с коротким сроком жизни + refresh токены в HttpOnly cookie

Ответ 18+ 🔞

А, ну вот, опять про эти ваши credentials, блядь! Слушай, как будто в первый раз! Ну ладно, раз уж спросил, сейчас разжую, как для дебила.

Короче, куда их пихать — зависит от того, насколько тебе дорога твоя жопа и жопы пользователей.

Cookie (это типа для серьёзных пацанов, для аутентификации): Вот это — наш выбор, если не хочешь, чтобы тебя выебали по полной. Тут главное — флажки правильно поставить, а то будет пиздец.

  • HttpOnly — это чтобы какой-нибудь умный хуй с помощью XSS не слямзил твой токен. Без этого флага — ты просто манда с ушами.
  • Secure — только для HTTPS, ёпта! Иначе всё летит открытым текстом, как письмо на хуй.
  • SameSite — от CSRF-атак защищает, чтобы с левых сайтов тебе куки не подсовывали. Ставь Strict и спи спокойно.
  • И главный плюс — браузер сам их приклеивает к каждому запросу, тебе нихуя не надо думать.
// Вот так это выглядит, когда делаешь по-взрослому
document.cookie = `token=${token}; Secure; HttpOnly; SameSite=Strict; path=/`;

LocalStorage (ну, для тех, кому похуй):

  • Это просто дырявая дыра, уязвимая для XSS, как моя тёща для сплетен. Любой скрипт — и твои токены уже торгуются на чёрном рынке.
  • Сам никуда не отправляется, придётся везде таскать вручную, как чемодан без колеса.
  • Зато места много! Можно хранить там какую-нибудь хуйню, типа темы оформления или размер шрифта.
  • Для чувствительных данных — это самоубийство, ядрёна вошь!

Так что, блядь, лучшая практика — не выёбывайся:

  • Токены доступа (access token) — ТОЛЬКО в HttpOnly куки! Это как золото в сейф, а не в кармане.
  • LocalStorage — только для клиентской хуеты, которая никому не нужна. Настройки, локальные состояния — да похуй.
  • HTTPS — ВСЕГДА! Без него все эти танцы с бубном — просто пиздопроебибна.
  • Идеальная схема — JWT с короткой жизнью (минуты) в куке, а для его обновления — refresh token, тоже в отдельной HttpOnly куке. Так безопаснее, ёперный театр!

Запомни: безопасность — это не когда тебя ещё не выебали, а когда ты сделал так, чтобы это было максимально сложно. Не будь распиздяем!