Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: authentication tokens, localStorage, sessionStorage, HTTP-only cookies, XSS, CSRF

Где безопаснее хранить токены и почему?

Вопрос проверяет понимание безопасного хранения аутентификационных токенов в клиентских приложениях, что критично для защиты от атак, таких как XSS и CSRF.

Короткий ответ

Токены безопаснее хранить в HTTP-only куках, а не в localStorage или sessionStorage. localStorage и sessionStorage доступны через JavaScript, что делает их уязвимыми для XSS-атак. HTTP-only куки недоступны для скриптов, что снижает риск утечки токена. Однако куки требуют защиты от CSRF с помощью дополнительных мер, таких как SameSite атрибуты и CSRF-токены.

Длинный ответ

Выбор места хранения токенов (например, JWT) на клиенте напрямую влияет на безопасность приложения. Основные варианты — это localStorage, sessionStorage и HTTP-only cookies, каждый со своими рисками и преимуществами.

Почему localStorage и sessionStorage небезопасны

Оба хранилища доступны через JavaScript на той же странице. Это означает, что если злоумышленник сможет внедрить вредоносный скрипт (XSS-атака), он сможет прочитать токен и отправить его на свой сервер. localStorage сохраняет данные постоянно, а sessionStorage — только на время сессии, но оба одинаково уязвимы к XSS.

Преимущества HTTP-only Cookies

Куки с флагом HttpOnly устанавливаются сервером через заголовок Set-Cookie и автоматически отправляются браузером при каждом запросе к домену. Ключевое преимущество: JavaScript не может получить доступ к содержимому такой куки, что защищает токен от кражи через XSS.

Недостатки Cookies и защита от CSRF

Основной риск использования кук — атаки CSRF (межсайтовая подделка запроса). Злоумышленник может заставить браузер пользователя отправить запрос с куками на ваш сайт. Для защиты используйте:

  • Атрибут SameSite=Strict или Lax для кук, чтобы ограничить отправку в межсайтовых запросах.
  • CSRF-токены в формах или заголовках запросов.
  • Валидацию происхождения запросов (заголовки Origin/Referer).

Пример настройки куки на сервере (Node.js/Express)

res.cookie('access_token', token, {
  httpOnly: true,
  secure: true, // Только по HTTPS
  sameSite: 'strict',
  maxAge: 24 * 60 * 60 * 1000 // 1 день
});

На клиенте вам не нужно вручную управлять этой кукой. Для API-запросов, требующих авторизации, кука будет отправляться автоматически.

Вывод

Используйте HTTP-only cookies для хранения токенов, когда это возможно, особенно для традиционных веб-приложений с серверным рендерингом. Для SPA, где требуется явный контроль над токеном, рассмотрите комбинированный подход: храните refresh token в HTTP-only куке, а короткоживущий access token — в памяти JavaScript (но не в localStorage). Всегда включайте флаги secure и sameSite и реализуйте защиту от CSRF.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Networks

Ключевые слова

#authentication tokens

#localStorage

#sessionStorage

#HTTP-only cookies

#XSS

#CSRF

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию