Чем безопаснее этот печально известный файл cookie, тем больше неприятностей он будет для вас. Если ваши пользователи должны быть особенно защищены, вам придется использовать самый хлопотный подход.
Вам следует принимать этот cookie только с https, если вы хотите быть максимально безопасным. Если файл cookie принят через http, его можно прослушать и украсть.
Я бы порекомендовал, чтобы в куки вообще не было пользовательских данных (как вы и предложили). К сожалению, для этого потребуется другая таблица. Когда пользователь входит в систему и выбирает «сохранить логин», создайте запись в этой таблице. Запись может иметь любое бессмысленное значение (например, md5(uniqid('', true));
. Этот токен может быть уникальным в БД и сопоставляться с идентификатором пользователя.
Когда пользователь посещает ваш веб-сайт, вы можете проверить значение этого файла cookie, получить пользователя, которому он принадлежит, и войти в него. На этом этапе вы уничтожаете старый токен и создаете новый. «Уничтожить» может означать много вещей. Вы можете полностью удалить его из БД или иметь флаг, который отключает токен. Возможно, вы захотите разрешить использование одного и того же токена несколько раз в случае получения файла cookie, но по какой-то причине аутентификация не проходит, но я думаю, что это небезопасно. Вы также можете сохранить временную метку токена и принять ее только в том случае, если она была ограничена (например, 30 дней).
Как указывает ваш друг, вы можете хранить другую информацию, такую как пользовательский агент, IP-адрес и т. Д., Но она может измениться даже при использовании того же браузера (особенно на мобильном устройстве) и если постоянный вход пользователя в систему не принят из-за этого им может быть неприятно и неудобно.
Если вы действительно не хотите создавать другую таблицу, вам придется сохранить какой-либо способ получения идентификатора пользователя из значения cookie. Это менее безопасно.