Cookie содержит ссылку, а не профиль
Session cookie передаёт непредсказуемый идентификатор. Роли, права и предметные данные остаются на сервере и могут быть пересчитаны. Не сериализуйте в cookie корзину объектов или разрешения, если клиент способен изменить значение либо данные быстро устаревают.
Secure ограничивает передачу HTTPS, HttpOnly закрывает чтение из JavaScript, SameSite задаёт кросс-сайтовое поведение. Domain и Path должны быть минимально широкими, а срок жизни соответствует назначению.
Жизненный цикл сессии
Черновик — не всегда сессия
Незаполненная форма на один переход может жить в сессии. Черновик, который пользователь ожидает увидеть завтра или на другом устройстве, является предметной записью в базе с владельцем и версией.
Параллельные вкладки создают гонки: одна меняет flash или общий черновик, другая читает. Имена ключей должны быть ограничены конкретным flow, а длительная блокировка session storage снимается после чтения необходимых данных.
Ключ повтора
Клиент создаёт случайный idempotency key для команды публикации. Сервер хранит связь ключа, пользователя, типа команды и результата под уникальным ограничением. Повтор с тем же содержимым возвращает прежний результат, а с другим содержимым считается конфликтом.
Не используйте session id как ключ идемпотентности: в одной сессии выполняются разные команды, а после ротации идентификатор меняется. Предметный уникальный ключ иногда проще — например, один дневной итог на пользователя и дату.
Минимизация и срок
Храните user id, короткий flash и технический flow id. Не кладите пароль, токены восстановления, полный объект пользователя или огромный результат импорта. При изменении прав сервер загружает актуальное состояние, а не доверяет старому массиву session.
Сессии имеют абсолютный и неактивный timeout. Продление активности не должно делать сеанс бессрочным. Чувствительные действия могут требовать повторной аутентификации независимо от общей сессии.
Лабораторная работа
Опишите ключи сессии для входа, flash и одноразового flow создания тренировки. Добавьте ротацию при входе и уникальный ключ публикации, затем смоделируйте две параллельные вкладки.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .