@DCanada
Full-stack JS

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

Здравствуйте, подскажите пожалуйста как можно уникально идентифицировать пользователя на сайте. У меня есть многопользовательский сайт. Соответственно есть регистрация и авторизация. При авторизации я создаю куки у клиента. Что мне нужно в них записать что бы идентифицировать пользователя, логично что ID или логин, но в таком случае может возникнуть ситуация когда пользователь сменить содержимое куки к примеру на ID другого пользователя и таким образом попадает на его страницу без пароля. Что мне нужно записать в куки?
  • Вопрос задан
  • 1234 просмотра
Пригласить эксперта
Ответы на вопрос 5
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
но в таком случае может возникнуть ситуация когда пользователь сменить содержимое куки к примеру на ID другого пользователя и таким образом попадает на его страницу без пароля. Что мне нужно записать в куки?
Самый простой вариант - сгенерировать какой-нибудь уникальный ID а потом зашифровать его sha512 например. Получите длинный уникальный ключ который довольно сложно подделать. Уникальный ID - должен быть в прямом смысле уникальным, а не "1, 2, 3". Например, крипто безопасные случайные числа на PHP, полученное число можно разбавить другими уникальными данными, например временем и ещё чем-то (например, как подсказывает коллега выше - добавить туда IP адрес, среди прочего). Полученные в результате хеш - будет достаточно уникальным. Привязываем этот хеш к пользователю и... готово!

P.S. "Подменщиков" куки, т.е. клиентов, которые пытаются сменить значение в куке на несуществующее - нужно отслеживать и банить по IP, как минимум.
Ответ написан
Stalker_RED
@Stalker_RED
profesor08
@profesor08 Куратор тега PHP
@bondarev075
Вот тут рассматривается хорошая идея постоянной авторизации через куки.
Ответ написан
Комментировать
@MIX2MAX
етаг, самый надежный варик, ну или куки уникид

header('ETag: "'.$m.'"');
...
header('ETag: "'.$m.'"', true, 304);
...

header('Set-Cookie: '.$n.'='.$m.'; path=/; Max-Age=31536000; Secure; HttpOnly');
...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы