(dis) преимущества сеансов перед файлами cookie - PullRequest
4 голосов
/ 04 марта 2011

Мне нужны подробности о сессиях.Каковы недостатки сессионных переменных?Между куки и сессиями, какой из них лучше?

Ответы [ 2 ]

10 голосов
/ 04 марта 2011

Я не буду касаться безопасности здесь, так как Infotekka уже немного углубилась в это. Похоже, вы спрашиваете, следует ли вам использовать СЕССИЮ или COOKIE, как если бы они были альтернативами друг другу.

Это не так. Они сервер (это была опечатка .. но я оставляю это, потому что это хороший каламбур) разных целей.

Поскольку HTTP не имеет состояния, PHP (и другие) предоставляют возможность имитировать конечный автомат в вашем приложении с помощью сеанса. Если вы этого не сделаете, вам придется использовать POST / GET между каждой страницей, чтобы сохранить согласованность данных, и если пользователь перейдет на другую страницу самостоятельно, эти данные будут потеряны! Таким образом, без СЕССИИ вы не смогли бы войти на ваш сайт, по крайней мере, не всегда.

Подводя итог, SESSION используется для хранения данных между несколькими страницами вашего сайта без использования HTTP в течение продолжительного периода времени. Вот для чего он используется.

Полагаю, вы могли бы использовать COOKIE для этого, но он намного сложнее, чем cookie, особенно когда имеешь дело с объектами, сериализованными в сеанс. Установленные COOKIE также не могут быть доступны до следующей загрузки страницы и должны быть установлены перед любым выводом сценария (как любой другой заголовок).

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

Файлы cookie следует использовать для хранения простых данных в течение длительного периода времени. Если они часто заходят на сайт, они могут захотеть, чтобы их имя пользователя запомнилось для них, чтобы оно могло быть сохранено в виде файла cookie. Просто помните о проблемах безопасности, отмеченных Infotekka.

РЕДАКТИРОВАТЬ: Наконец, я должен добавить, что COOKIE передаются при каждом запросе страницы между пользователем и браузером. Больше файлов cookie означает больше времени загрузки страницы.

6 голосов
/ 04 марта 2011

Это довольно открытый вопрос, но я думаю, что самая важная вещь, которую вы должны учитывать при использовании сеанса в PHP, это то, насколько легко его взломать. Сеанс PHP сохраняет все свои значения в кэше сервера, где он извлекается на основе идентификатора сеанса, который записывается в файл cookie на клиенте. Пока этот сеанс активен, клиенту, который подключается с этим идентификатором сеанса, будет предоставлен доступ к этому сеансу.

Существуют некоторые страшные программы, такие как firesheep, которые могут показать вам, насколько просто набрать идентификатор сессии и сделать ее своей. Если вы собираетесь основывать какую-либо безопасность на этом сеансе, вам нужно убедиться, что ВСЕ, что вы делаете, работает поверх SSL, и вам следует встроить второй уровень проверки, чтобы убедиться, что ваш сеанс не был взломан.

С учетом всего вышесказанного, сеанс является отличным местом для хранения постоянных значений, к которым вам потребуется доступ в течение жизненного цикла пользовательского приложения.

...