У меня на сайте есть регистрация/авторизация пользователей! Использую password_hash при регистрации, при авторизацию делаю проверку password_verify, потом в сессию записываю логин и пароль пользователя, и на каждой стр. просто делаю проверку, если есть переменные сессии логин и пароль, то открываю доступ к ...
Всё работает отлично, но мне кажется что это как-то не правильно, просто делать проверку на существование переменных сессии, наверное можно как-то более "усложненную/безопасную" идентификацию пользователя делать на каждой стр., думал просто дергать хеш пароля из бд и на каждой стр. делать проверку пароля - password_verify, но вот думаю не будет-ли нагрузки на сервер, при большом посещении сайта (надеюсь в будущем! )) ). Может кто знает как лучше идентифицировать пользователя при каждом переходе со стр. на стр.?
Вот пожалуй так! Думаю вопрос понятно изъяснил, подскажите кто в теме! Спасибо ))
Imho стандартное решение:
При авторизации пользователя по логину-паролю генерим некую длинную строку (токен), записываем в базу, + пишем в куки.
При каждом запросе пользователя берем этот токен из кук и проверяем есть ли такой.
По желанию можно докрутить время жизни, проверку ip итд итп.
я генерирую такой токен при регистрации пользователя для подтверждения по e-mail, храню его в бд, наверное его можно использовать. Но вот какой смысл? Можно использовать также и логин+пароль?
Разве есть смысл без "прикрутки" по крайней мере хотя бы ip? Ведь как могут украсть куку SESSID, так и токен заберут и просто подставят, получается и защиты-то особо нет :|
SimBioT19: ok! т.е. мне вместо логин+пароль в сессию записывать id и делать проверку на существование переменной id при переходе пользователя со стр. на стр.? Вопрос: как лучше идентифицировать пользователя при переходе?
Евгений Конкин: идентификация пользователя происходит по id в сессии, а "уверенности" в том, что это id именно этого пользователя, добавляет ХЕШ в куки, как уже написали. Сверяете id && КУКИ в БД
Дмитрий Энтелис: в сессии храню токен и при переходе проверяю переменную токен в сессии, если есть, то доступ к ..., если нет, то нет! Разве не так я понял?
Евгений Конкин: почитайте как устроены сессии в PHP :)
Если вы используете сессии (что я не рекомендую - но это тема для отдельной истории), то Вам достаточно в сессии явно хранить user_id и все.
Дмитрий Энтелис: Спасибо за ответ! Но мне так никто вразумительно и не посоветовал, что лучше использовать для идентификации! Куки? Но почти все говорят что разницы между сессией и куками почти нет? Вот и использую сессии, так как с руками особо не сталкивался, и это мой первый серьезный проект! Так что, лучше куки использовать?
6epcepk, token в куках. все остальное в базе.
сверять пропорционально параноии и критичности данных.
В целом проверка на ip я считаю уместна в каких-то сильно приватных системах в рамках одной короткой сессии.
sim3x: Вы что-то подобное на практике делали или это ваша теория? Я себе не представляю, как можно подобрать SID. К примеру SID Тостера - 26 знаков, в каждом из которых может быть цифра или буква в нижнем регистре. Итого: 36 в 26 степени комбинаций.