У меня есть пользовательская база данных, в которой хранятся зашифрованные пароли и вы хотите создать файл cookie «Keep me logged in». Я считаю, что следующий метод должен быть достаточно безопасным для моих целей, но я хотел бы услышать ваши мысли:
Это можно было бы манипулировать, если бы кто-то правильно угадал строку маяка, но я намерен сделать ее большой и случайной, что это очень сложно сделать.
Я предполагаю, что это делается в дополнение к обычной обработке сеанса как способ воссоздания сеанса позже.
Есть несколько вещей, которые можно сделать для повышения безопасности.
Похоже, вы пытаетесь воссоздать сеансы с нуля. Почему бы просто не пройти session_set_cookie_params () действительно длинный тайм-аут?
Я думаю, что это не лучший способ реализовать cookie «помни меня». Сделать хэш больше не решение.
Подумайте о том, чтобы сохранить что-то еще в своем cookie.
Вы предлагаете следующее:
'a89bd752123cde09'
Если у вас много пользователей, возможно, это не так сложно, как вы думаете, чтобы получить действительный токен
Если вы просто добавляете идентификатор пользователя в этот хэш …
$userID . '-' . 'a89bd752123cde09
Теперь им нужно получить действительный токен, связанный с правильным идентификатором пользователя, мы сделали его немного сложнее
Вы также можете конкатенировать что-то о браузере или сеансе пользователя и зашифровать его, возможно, что-то вроде этого:
hash_hmac('sha256', $userID . '-' . 'a89bd752123cde09' . '-' . md5(timeStamp when remember expires) . '-' . md5(browser user agent), A_SECRET_KEY);
Когда вы проверяете файл cookie, он зашифровывает его и проверяет правильность данных.
Это не лучшее решение, но я думаю, что это лучше. Существует много информации о безопасности в Интернете, читайте об этом и не выполняйте это непосредственно.