Авторизация, варианты реализации (PHP)

12
Sanu0074
На сайте с 31.08.2012
Offline
110
686

Как правильно реализовать авторизацию на сайте, при условии что браузер должен запоминать юзера.

Есть вариант такой:

Отправляем логин и пароль, пароль хэшируем функцией password_hash().

При авторизации сравниваются строки хэша.

В случае успеха при авторизации записываются куки ID и хэш пароля, при каждом обновлении страницы эти данные сравниваются.

Это самый простой способ который только можно придумать. Хочется что-то более усложненное, например так чтобы меньше оставлять "палева" в куках или так чтобы при каждом обновлении страницы не сверялось совпадении пароля и ID по куке, а например можно рассмотреть вариант если сессия с ключом для этого юзера запущена - то не делать запросы к бд для сравнивания id и пароля. Посоветуйте что нибудь пожалуйста!

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Почитайте как работать с сессиями и как через них делается авторизация.

Не нужно велосипед придумывать, уже всё сделано до вас.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
[umka]
На сайте с 25.05.2008
Offline
456
#2

Сессия, грубо говоря, это та же аутентификационная кука.

Сложнее вы вряд ли что-то придумаете.

Пользователя можно определить или по логину-паролю, или по какому-то секретному идентификатору (куке).

Сложнее можно сделать только с https и аутентификацией с проверкой сертификатов, выдаваемых индивидуально каждому пользователю :)

Лог в помощь!
Sanu0074
На сайте с 31.08.2012
Offline
110
#3

Безопасно ли хранить хэш пароля и id в куках? я думаю нет. Для выхода из такой ситуации можно прилепить опционально привязку к ip, но это не очень удобный вариант... Что можно придумать?

[umka]
На сайте с 25.05.2008
Offline
456
#4

В куке нужно хранить не хэш пароля, а зашифрованный идентификатор, который на сервере можно расшифровать.

Ну и туда же добавить другие необходимые данные, при необходимости, например, срок действия, ip-адрес и пр.

Sanu0074
На сайте с 31.08.2012
Offline
110
#5
[umka:
;12794042]а зашифрованный идентификатор, который на сервере можно расшифровать

Что в нем должно шифроваться?

M0
На сайте с 04.02.2009
Offline
86
#6
LEOnidUKG:
Почитайте как работать с сессиями и как через них делается авторизация.
Не нужно велосипед придумывать, уже всё сделано до вас.

Не совсем же, первый раз запустить для юзера сессию тоже надо ☝

[umka]
На сайте с 25.05.2008
Offline
456
#7
Sanu0074:
Что в нем должно шифроваться?

Написал же, идентификатор пользователя… ID…

Или у вас только логины/пароли? Ну можно логин вместо ID

Sanu0074
На сайте с 31.08.2012
Offline
110
#8
[umka:
;12794077]Написал же, идентификатор пользователя… ID…
Или у вас только логины/пароли? Ну можно логин вместо ID

Так а суть в чем? если куки всегда могут подменить, я имею ввиду то что как-то надо строку менять по времени и последние изменения в базе хранить... Объясните подробнее или киньте линк на статью, я не до конца понимаю

[umka]
На сайте с 25.05.2008
Offline
456
#9
Sanu0074:
если куки всегда могут подменить

Можно поподробнее, как это сделать? :)

Если куки могут подменить, то и пароль могут украсть.

И если так рассуждать, то даже если авторизация с каким-нибудь usb-донглом, то на компьютере может быть троян, который выполнит нужные действия от имени пользователя.

Sanu0074
На сайте с 31.08.2012
Offline
110
#10
[umka:
;12794122]Если куки могут подменить, то и пароль могут украсть

:) Я понял. Думал что стоит заморачиваться с интервальной сменой хэша в куке)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий