Что нужно хранить в cookie для системы входа?

Что лучше хранить в куки, чтобы сохранить постоянное состояние входа?

Я видел много веб-сайтов (и начинающих учебников!), которые просто хранят в файле cookie что-то вроде validUser = 1. Очевидно, я мог бы обмануть это, и веб-сайт подумает, что я действительный пользователь.

Если имя пользователя хранится в файле cookie, я мог бы маскироваться как любой пользователь, отправив файл cookie с его/ее именем пользователя в мой запрос.

Итак, если вы храните в cookie имя пользователя и, тогда я должен знать имя пользователя и пароль для входа. Эффективно пользователь регистрируется автоматически - это похоже на то, что пароль сохранен его браузера. Вместо того, чтобы каждый раз вводить учетные данные в ящики, браузер автоматически отправляет их с каждым запросом страницы.

Но разве это еще плохая идея? Хранение простого текстового пароля - не блестящая идея, но то, как он будет отправляться в POST-данных при входе в систему. И кроме того, он может быть сохранен хэшированным. Но я до сих пор не чувствую себя комфортно.

Возможно, файлы cookie не должны использоваться для хранения чего-либо, кроме идентификатора сеанса, а данные пользователя хранятся на самом сервере. Возможно, это более безопасное место, предполагая, что сервер не используется.

Глядя на какое-то программное обеспечение с открытым исходным кодом, такое как программное обеспечение для форумов, они используют более сложную систему, но я не мог точно понять, что именно она делает, чтобы скрыть код.

Какова стандартная "лучшая практика"?

Ответ 2

Лучшей практикой было бы использовать SESSION вместо COOKIE для использования данных. COOKIES используются для хранения общей информации, а не конкретной информации о пользователе, о том, для чего используются СЕССИИ.

Ответ 3

Лучшей практикой является хранение случайно сгенерированного идентификатора сеанса. Затем сеанс сохраняет идентификатор пользователя или все остальное, что вам нужно для хранения. В PHP метод session_start() автоматически генерирует идентификатор сеанса и файл cookie с именем PHPSESSID, поэтому вам нужно только беспокоиться о сохранении данных в массиве $_SESSION, а не в файле cookie.

Ответ 4

Единственное, что должно быть в cookie, это sessionid, сгенерированный PHP (и это делается автоматически, когда вы используете сеансы). Вы не должны хранить что-либо в файле cookie, за исключением, возможно, запоминающегося имени пользователя для флажка "запомнить меня".