fast-je
@fast-je
Пишу на php.

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

У меня есть самописный проект на php. При входе если человек решил запомнить себя в системе, то генерируется специальный хеш случайный, который будет записан в бд и в куки, после чего когда закрыл браузер и снова открыл, сессия разрушилась он обращается снова к ресурсу, проверяется есть ли сессия, нету, далее проверяем куки есть ли хеш для авторизации, если есть сверяем его с бд и авторизовываем пользователя в системе, и делаем новую сессию. То есть если будет украдена кука, то можно зайти в личный кабинет юзера, потом подумал может сделать хеш из user-aget + хеш пароль и весь этот хеш записывать в куку, но тут сразу же подумал что и user-aget можно подделать. Вообщем не знаю, что делать. Как авторизовать пользователя на долгое время 2 дня например к личному кабинету более безопасным способом чем кука с хешем пароля и user-aget, как сейчас. Может есть какие-то новые способы.
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
Используйте TLS (https) и куки с флагом HTTP Only и Secure. В качестве куки лучше использовать достаточно длинный случайный идентфикатор сеанса.

Такую куку нельзя украсть через XSS, можно украсть только получив доступ к браузеру пользователя. Но в случае, если атакующий получил доступ к браузеру, вы уже никак не поможете пользователю. Атакующий будет иметь доступ ко всем, к чему имеет доступ пользователь.

Можно дополнительно привязать куку к автономной системе (AS) и браузеру, но реальной дополнительной защиты это не дает. Привязка к IP ре рекомендуется, т.к. IP может достаточно часто меняться у пользователя, особенно мобильного.

Писать куда-либо хэш пароля не следует, это ничего не дает в плане защиты, но позвоялет сбрутить пароль, если каким-то образом похищена кука (например через баг на поддомене).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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