Автоматическая авторизация на сайте
Как-то я ползал по Интернету и искал информацию о том как сделать время жизни сессий вечным. Думал, что это будет оптимальным способом автоматической авторизации пользователей, которые уже когда-то побывали на сайте. И набрел я на холивары по этому поводу. Долго я их читал-изучал, но в сухом остатке, склонившись к одному из мнений, я решил что сессии не лучший способ для этого.
Вот такой алгоритм подходит куда лучше:
- Отправляем куку в браузер пользователя с каким-то уникальным ключом и долгим сроком жизни этой куки
- В базе сохранять md5 хеш этого ключа с привязкой к ID юзера
- Если приходит юзер с известным ключом в куках (совпадающим по хешу с тем, что есть в базе)
Такого пользователя мы можем сразу авторизовать по ID - Но надо всё же удалить текущую запись об этом пользователе из базы (имеется в виду хеш ключа с привязкой к ID, но, естественно, не саму учетную запись)
- Далее отправляем пользователю новую куку и новым уникальным ключом и делаем в запись в базу md5 хеш этого ключа с привязкой к ID юзера.
Сессии не подходят для этой операции, так как в идеале сессия должна жить до закрытия браузера пользователем.
Этот метод хорош тем, что даже если злоумышленник каким-либо образом получит куку из браузера настоящего пользователя, то он не сможет долго ей пользоваться. Хоть он и сможет на некоторое время получить доступ, но как только настоящий хозяин аккаунта войдет на сайт, не сможет авторизоваться автоматически и введет свои логин и пароль вручную, то запись в базу тут же обновится и злоумышленник тут же потеряет доступ.

0 коммент.:
Отправить комментарий