Просмотр поста

.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
На данный момент в JohnCMS система авторизации сильно устаревшая и нет смысла ее рассматривать.

По хорошему счету, логика авторизации (на примере MobiCMS) такова:

1) Клиент заходит на форму входа, вводит свой логин и пароль.
2) В базе данных ищется запись с введенным логином.
3) Если запись найдена, то хэш введенного в форму пароля, сверяется с имеющимся в базе (хэширование с солью). Далее пароль НИГДЕ не используется.
4) Если пароль совпадает, клиент считается авторизованным, ему генерируется временный токен (хэш строки из набора случайных символов и цифр).
5) Сгенерированный токен записывается в куки, сессию и специальную таблицу.

При повторном входе на сайт (если сессия уже протухла), токен из куков ищется в вышеуказанной таблице. Если токен есть и его время действия не прошло, клиент считается авторизованным.

Так, как токен генерируется от балды и не имеет никакого отношения к логину и паролю, вычислить какие-то данные по нему невозможно.

При желании, можно включать дополнительную защиту в виде привязки по IP (адрес тоже пишется вместе с токеном в вышеуказанную таблицу).

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