Сессия - это не на сервере, это абстрактное понятие, сделанное для упрощения вхождения в курс начинающих (и говно-) кодеров.
(1)Юзер логинится (аутентифицируеится), под его права все роутеры-шаблонизаторы исходя из политик генерируют и отправляют контент. Все. Один запрос страницы - один ответ.
(2)Чтобы юзер не вводил логин-пароль постоянно, при первом логине ему создается идентификатор и отправляется в куках. Т.о. при каждом запросе юзер вместо логина отправляет этот идентификатор. А сервер - см. (1)
Естественно, этот индентификатор можно перехватить (по незащищенному соединению за милую душу, по защищенному - трояны никто не отменял) и авторизоваться вместо юзера.
Поэтому на стороне сервера по разному решают эту проблему:
Вк пишут мыло на каждый логин "вы вошли", Гугл пишет (с этого ИП вы не входили, подтвердите), кто-то забивает, кто-то (банки) каждый новый логин требуют подтверждать СМС.
Как сервер определяет подозрительность? от слепков браузера до часовых поясов.
почитай про
OAuth
почитай про
CSRF