Какой самый лёгкий и безопасный способ держать пользователя авторизованным?

Поискав некоторые решения в интернете, понял что вполне можно через сессии реализовать такую функцию, но вот незадача - по умолчанию сессия 24 минуты, менять php.ini на другое значение - не вариант т.к. есть вероятность что в процессе разработки придётся также использовать сессии, но с другой длительностью. ini_set почти по той же причине отлетает из вариантов.

Помню где-то, что при регистрации в бд можно генерить случайный токен, и затем при успешном логине кидать токен в куки. Опять не подходит потому что куки могут украсть. Наверное нужен куки, которого будет недостаточно чтобы злоумышленник мог быстро зайти в аккаунт, но я уже не в силах сообразить, как такое сделать.

Хранить IP последнего входа в аккаунт? Идея неплохая, но если каким-то магическим образом БД взломают, то все айпи попадут нехорошим людям.

Вопрос остаётся - как реализовать нормальный и безопасный способ для такой функции, чтобы больше не приходилось использовать другие варианты после каждой очередной жалобы на взлом?
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Недолгоживущий JWT Access Token (5-15мин), который после того как просрочится сделает доступ к сервису невозможным.

Но чтобы каждые 5 минут не простить залогиниться пользователя изобрели RefreshToken, который хранится в базе дольше. Примерно 1 месяц. Он нужен для того, чтобы выпустить новый JWT AccessToken. При взломе RefreshToken просто удаляется и новый AccessToken выпустить не получиться. Почитайте в целом про OAuth 2.0 + JWT
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Опять не подходит потому что куки могут украсть.
Откуда вы такие специалисты по безопасности беретесь?..

Вопрос остаётся - как реализовать нормальный и безопасный способ для такой функции, чтобы больше не приходилось использовать другие варианты после каждой очередной жалобы на взлом?
Взлом через уведенную куку входит в топ 5 малореальных сценариев взлома, если у вас есть хоть какая-то защита от XSS.

Хранить IP последнего входа в аккаунт? Идея неплохая, но если каким-то магическим образом БД взломают, то все айпи попадут нехорошим людям.
Оу, вас это больше всего расстраивает? Учитывая что 80% траффика сейчас идет через мобильные сети, айпи будет разниться при каждой сессии авторизации. И в данном случае вероятность такого взлома вы почему-то оцениваете практически как "магию", в то время как доступ к кукам пользователя у вас на уровне "ну, это точно случится, и скорее всего раньше, чем позже, любой может там гулять как у себя дома"...
Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект