Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: cookies, authentication, tokens, httpOnly, security

Почему токены часто хранят в cookies?

Вопрос проверяет понимание механизмов хранения токенов аутентификации и безопасности веб-приложений.

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

Токены часто хранят в cookies, потому что это позволяет автоматически отправлять их с каждым HTTP-запросом к серверу. Cookies могут быть помечены как httpOnly, что защищает их от доступа через JavaScript и снижает риск XSS-атак. Также можно установить флаги Secure (только HTTPS) и SameSite (защита от CSRF). Это удобный и относительно безопасный способ управления сессиями.

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

Почему cookies популярны для хранения токенов?

Cookies — это небольшие фрагменты данных, которые браузер хранит и автоматически отправляет на сервер с каждым запросом к домену, который их установил. Это делает их естественным выбором для хранения токенов аутентификации, так как разработчику не нужно вручную добавлять токен в заголовки каждого запроса.

Ключевые преимущества

  • Автоматическая отправка: Браузер сам добавляет cookie в заголовок Cookie при каждом запросе, что упрощает клиентский код.
  • Флаг httpOnly: Если установить httpOnly, cookie становится недоступным для JavaScript (document.cookie). Это защищает токен от кражи через XSS-атаки.
  • Флаг Secure: Ограничивает отправку cookie только по HTTPS, предотвращая перехват в незащищённых сетях.
  • Атрибут SameSite: Помогает защититься от CSRF-атак, ограничивая отправку cookie с межсайтовыми запросами.

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

const express = require('express');
const app = express();

app.post('/login', (req, res) => {
  const token = 'some-jwt-token';
  res.cookie('auth_token', token, {
    httpOnly: true,
    secure: true,
    sameSite: 'strict',
    maxAge: 3600000 // 1 час
  });
  res.send('Logged in');
});

app.get('/profile', (req, res) => {
  const token = req.cookies.auth_token;
  if (!token) return res.status(401).send('Unauthorized');
  // проверка токена
  res.send('Profile data');
});

Недостатки и альтернативы

Cookies имеют ограничение по размеру (около 4 КБ) и могут быть уязвимы для CSRF, если не настроить SameSite. Альтернативой является хранение токена в localStorage и отправка через заголовок Authorization, но это менее безопасно при XSS, так как JavaScript имеет прямой доступ к хранилищу.

Вывод: Хранение токенов в cookies с флагами httpOnly, Secure и SameSite — это стандартная практика для веб-приложений, требующих баланса между удобством и безопасностью. Особенно полезно для серверных приложений, где не нужен доступ к токену из JavaScript.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Networks

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

#cookies

#authentication

#tokens

#httpOnly

#security

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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