Что такое сессия
Что проверяют
Понимаете ли вы, как сервер узнаёт пользователя между запросами, если HTTP сам по себе состояния не хранит. Для тестировщика следом почти всегда идёт практическое: как вы проверите, что сессия корректно создаётся, истекает и уничтожается при выходе.
Как отвечать
Сессия это состояние, которое связывает серию запросов с одним пользователем. Каркас ответа:
- идентификатор: после входа сервер создаёт случайный session ID и отдаёт его клиенту, обычно в cookie. Сами данные (кто вошёл, роль, корзина) лежат на сервере: в памяти, в Redis или в базе;
- флаги cookie:
HttpOnlyзакрывает доступ к cookie из JavaScript,Secureотправляет её только по HTTPS,SameSiteограничивает отправку с чужих сайтов и снижает риск CSRF; - время жизни: бывает тайм-аут простоя и абсолютный срок. Сессионная cookie без
Expiresудаляется при закрытии браузера, но серверная сессия живёт до своего тайм-аута; - завершение: при выходе сессия должна уничтожаться на сервере, а не только стираться cookie в браузере;
- токены: во многих API вместо серверной сессии используют JWT. Его сервер не хранит, поэтому отозвать токен до истечения срока сложнее.
Затем расскажите, как это тестировать. В DevTools на вкладке Application смотрите cookie и её флаги. Проверяете, что после логина ID меняется (защита от фиксации сессии), что старая cookie после выхода не пускает в кабинет, если подставить её в запрос через Postman или curl, что по тайм-ауту происходит редирект на вход. Отдельно гоняете сценарий с двумя браузерами под одним аккаунтом: что происходит с первой сессией, когда во второй меняют пароль.
Где спотыкаются
Путают сессию и cookie. Cookie это только способ донести идентификатор, сама сессия живёт на сервере, и идентификатор можно передавать и через заголовок.
Считают, что закрытие браузера завершает сессию. Браузер умеет восстанавливать вкладки вместе с сессионными cookie, а сервер про закрытие окна вообще не знает.
Проверяют выход только по интерфейсу: кнопка сработала, страница входа открылась. Баг, при котором старый session ID продолжает работать после логаута, так не найти, нужен повтор запроса со старой cookie.