Что должно храниться в куки для системы входа в систему? - PullRequest
11 голосов
/ 11 сентября 2009

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

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

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

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

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

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

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

Что такое стандартная «лучшая практика»?

Ответы [ 4 ]

3 голосов
/ 11 сентября 2009

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

0 голосов
/ 11 сентября 2009

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

0 голосов
/ 11 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...