Задать вопрос

Будет ли правильным в php при авторизации просто занести только логин в сессию?

Будет ли правильным в php при авторизации просто занести только логин в сессию или как сделать более менее безопастно?
  • Вопрос задан
  • 3851 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 5
astrikovd
@astrikovd
Python Developer
Обычно при успешной авторизации запоминаю в сессию только id пользователя. Если логин в вашем случае уникален, то можно и его. Суть в том, чтобы при необходимости, вы могли в любой момент вытащить по этому полю остальные данные пользователя.
Ответ написан
Комментировать
vapmaster
@vapmaster
В целях безопасности в сессии имеет смысл хранить только идентификатор пользователя и идентификатор в виде хэша от IP пользователя + User Agent пользователя + Соль. Таким образом вы всегда сможете проверить принадлежность сессии данному пользователю, а также оставите за собой возможность контроллировать сессию при смене пользователем IP адреса или браузера.
Ответ написан
Комментировать
Достаточно только ID.

А вот что действительно не нужно, так это IP и UserAgent. Это пережитки прошлого века. При использовании в алгоритмах проверки IP появятся проблемы с людьми, которые работают через проксик. UserAgent нужно проверять на клиенте, а не на сервере.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Лучше добавить User Agent, а если можно - и IP, и сверять их с текущими.
Ответ написан
LocKing
@LocKing
Не задавай вопросов — не услышишь лжи
Полностью согласен с @astrikovd. Как правило всегда есть ID пользователя. И соответственно после того, как юзер прошёл авторизацию, достаточно только хранить его идентификатор и проверять его только по ID, записанной в сессии.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Из всего изложенного выше - наиболее оптимальным вариантом вижу хранение в сессии сериализованного(json_encode, serialize) массива из ID(или логина, при условии его уникальности) юзера и хеша пароля. При смене пароля - все старые сессии отпадают.

Категорически не рекомендую и использовать проверки по IP и User Agent.
При проверке по IP - отпадают пользователи на динамических IP(это те же мобильные операторы).
При проверке User Agent - сессия будет слетать при каждом обновлении браузера(т.к. User Agent в этом случае тоже меняется). А все современные браузеры обновляются очень часто и в автоматическом режиме.

Еще как вариант(более параноидальный) - можно генерировать рандомный хеш sha256(или sha1, md5, без разницы), заносить этот хеш в бд рядом с ID юзера. Затем записывать пользователю две куки - с id и с этим хешем. При посещении проверять эти два параметра.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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