[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автологин
RootPM
Чему учат в школах ) Как правильно и безопасно сформировать хеш для cookie, чтобы делать авто-логин?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
При этом данные аккаунта использовать запрещено

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Astin
ну можно не все двнные использовать, к примеру логин, маил, плюс соль обычная и соль для каждрго юсера, но ее нужно хранить в бд, ну и далее все эио хешируем, а как ты будешь хешировать, то есть алгоритм, дело твое
Astin
а почему нельзя использовать данные аккаунта, к примеру логин?
Ну не хочешь данные, так пиши id юсера в хеш
Astin
здесь скорее нужно правильно сделать алгоритм хеширования, чтоб к примеру при раскодировании это было затратно, ну и чтоб сервер не нагрузить. И я думаю не важно будешь ты использовать логин или маил юсера, если грамотно захешировать то все будет гуд, имхо
Arh
RootPM
"безопасно" как и "правильно" понятия относительные.
я обычно храню в куках ключ key со значением что то на подобии user_id:md5(хэш_из_базы . $_SERVER['HTTP_USER_AGENT']).
хэш_из_базы - какая нибудь полурандомно-сгенерированная хрень, которая хранится в таблице пользователя, если нужно выйти на всех устройствах, например при смене пароля, перегенерирую этот хэш.


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
RootPM
Цитата (Arh @ 18.11.2016 - 20:38)
хэш_из_базы - какая нибудь полурандомно-сгенерированная хрень

random_int - подойдёт?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Astin
Цитата (RootPM @ 19.11.2016 - 14:21)
Цитата (Arh @ 18.11.2016 - 20:38)
хэш_из_базы - какая нибудь полурандомно-сгенерированная хрень

random_int - подойдёт?

а почему именно random_int? Можно самому написать функцию, которая будет генерировать рандомное число, знаки и буквы, и это все будет вкучу, а колияество знаков можно задать отдельно
killer8080
данные автологина хранить в таблице вида
user_id | token
token генерить криптостойким источником random_bytes(), random_int(), openssl_random_pseudo_bytes() и т.п.
на этапе авторизации просто проверять наличие записи в БД
Arh
RootPM
Цитата
random_int - подойдёт?

Тут скорее важна длинна токена.
Если хакер знает твой алгоритм хэширования, допустим он знает юзер агент жертвы и знает id жертвы. Если токен это рандомное число от 1 до 10, то взломать можно простым перебором.
Сделай несколько алгоритмов получения токена и рандомно применяй их для генерации.
К примеру один мешает дату последнего захода пользователя с рандомно взятой буквой из его пароля и тд и хэшурет это с помошью (md5,sha1 или еще чего, тоже рандомно).
Другой берёт часть из юзерагента и ip пользователя, добавляет random_int или другую ахинею и тоже хеширует любой рандомной функцией.



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
killer8080
Цитата (Arh @ 19.11.2016 - 22:20)
Тут скорее важна длинна токена.

само собой
Цитата (Arh @ 19.11.2016 - 22:20)
Сделай несколько алгоритмов получения токена и рандомно применяй их для генерации.

зачем?

echo bin2hex(openssl_random_pseudo_bytes(32));
и не надо лохматить бабушку user posted image
Arh
killer8080
Цитата
зачем?

Мы не ищем лёгких путей)
Спасибо, пригодиться)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
killer8080
Вообще можно ещё проще, не нужно генерить никаких токенов, просто делаем сессионные куки вечными, и используем session_id в качестве токена. В куку автологина просто пишем user_id, и тоже делаем вечной.

PS вечной конечно условно, нужно просто сделать expire очень, очень большим smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.