@serhii328764

Как правильно работает аутентификация пользователя?

Всем привет! Вопрос теоретического характера, без привязки к языку, используемому на сервере.

Прочитал несколько статей по аутентификации пользователя, но нет четкого понимания.

1. Регистрация.

Пользователь впервые регистрируется на сайте, заполняет данные формы. После проверки соответствия требованиям к имени и паролю данные отправляются на сервер, где сохраняются в БД (три поля - user id, login, password в зашифрованном виде и хеш-строка, пока пустое поле).

2. Аутентификация.

Пользователь вводит пару логин-пароль, сервер проверяет данные. Если они корректны, то два варианта:
a) формируется случайная длинная строка, хешируется и записывается в строку из БД по данному юзеру и в cookies, например key=jdfhfdkjJHTJkdjsh9874hjgf;
b) на сервере, например, PHP, создается объект сессии и уже его id отправляется польлзователю в куках и на сервере он связывается с данным юзером.

3. Logout

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

Собственно вопросы. 1) верен ли алгоритм описанный выше? 2) если срок действия куки указан неделя (или безсрочно) и сессия на сервере хранится, то пользователю достаточно этой записи в куках, чтобы зайти на сайт без аутентификации? 3) если злоумышленник ворует данную куку, он может с идентичной записью (id сесси или хеш-строка) также зайти на сайт без аутентификации? 4) как работает аутентификация через токен? где прочитал, что эта та же случайная строка, зашифрованная, или что токены используются для аутентификации на сторонних доверенных сервисах, например, пользователь заходит через соц. сети.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
tundramani
@tundramani
иногда "правильно" - это догма

проще всего использовать такой метод:

клиент обменивается с сервером через кроссдоменный ajax по https
оправляет и получает json
внутри него среди остальных данных пароль авторизации

то есть сервер принимает запрос клиента и проверяет пароль
передаваемые данные надежно защищены

такой способ работает на сайтах и в phonegaap-приложении
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы