advanced

Sessions и cookies

Используйте server-side sessions или signed cookies с Secure, HttpOnly, SameSite, expiry, rotation, revocation и CSRF-aware request design.

Session-based auth хранит состояние на сервере по session ID в HttpOnly cookie. Браузер отправляет cookie автоматически на same-site запросах; сервер ищет сессию в Redis, БД или в signed encrypted cookies (stateless sessions).

					res.cookie('sid', sessionId, {
  httpOnly: true,
  secure: true,
  sameSite: 'lax',
  maxAge: 3600_000,
  path: '/',
});

async function loadSession(req, res, next) {
  const sid = req.cookies.sid;
  req.session = sid ? await store.get(sid) : null;
  next();
}
				

Ротируйте session ID при повышении привилегий (login). Revocation — удаление записи на сервере. Для state-changing запросов при SameSite не Strict — CSRF protection.

На интервью: server-side sessions vs JWT в cookies; fixation и rotation; HttpOnly блокирует XSS theft, но не CSRF.

Типовые ошибки: большие объекты в cookies; session ID в URL; без TTL/idle timeout; session store как SPOF без HA.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • HttpOnly, Secure, осознанный SameSite.
  • Server-side lookup с expiry и rotation.
  • CSRF tokens или Strict SameSite для мутаций.
  • Внешний session store для horizontal scale.