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