Мне нужны некоторые подробности о сессиях. Каковы недостатки переменных сеанса? Между файлами cookie и сеансами, что лучше?
(не)преимущества сеансов по сравнению с файлами cookie
Ответы (2)
Я не буду касаться здесь безопасности, так как Infotekka уже довольно много этим занималась. Похоже, вы спрашиваете, следует ли вам использовать SESSION или COOKIE, как будто они являются альтернативами друг другу.
Они не. Они серверные (это была опечатка… но я оставляю это, потому что это хороший каламбур) для разных целей.
Поскольку HTTP не имеет состояния, PHP (и другие) предлагают возможность имитировать конечный автомат в вашем приложении с помощью сеанса. Если бы вы этого не сделали, вам пришлось бы использовать POST/GET между каждой страницей, чтобы данные были согласованными, и если пользователь перейдет на другую страницу самостоятельно, данные будут потеряны! Таким образом, без SESSION вы не сможете зарегистрировать пользователя на своем сайте ... по крайней мере, не очень последовательно.
Подводя итог, SESSION используется для хранения данных между несколькими страницами вашего сайта без использования HTTP в течение длительного периода времени. Вот для чего он используется.
Я полагаю, вы могли бы использовать COOKIE для этого, но это намного сложнее, чем cookie, особенно при работе с объектами, сериализованными в сеанс. Установленные файлы COOKIE также недоступны до загрузки следующей страницы и должны быть установлены до любого вывода сценария (как и любой другой заголовок).
Сеансы должны быть именно такими — сеансами, которые имеет пользователь, когда он сидит за своим компьютером, сколько бы долго он ни работал над сайтом. Когда уходите, сеанс заканчивается.
Файлы cookie следует использовать для хранения простых данных в течение длительного периода времени. Если они часто посещают веб-сайт, они могут захотеть, чтобы их имя пользователя запомнилось им, чтобы оно могло быть сохранено в виде файла cookie. Просто помните о проблемах безопасности, отмеченных Infotekka.
РЕДАКТИРОВАТЬ: Наконец, я должен добавить, что файлы COOKIE передаются при каждом запросе страницы между пользователем и браузером. Больше файлов cookie означает большее время загрузки страницы.
Это довольно открытый вопрос, но я думаю, что самое важное, что вы должны учитывать при использовании сеанса в PHP, это то, насколько легко его перехватить. Сеанс PHP сохраняет все свои значения в кэше сервера, откуда они извлекаются на основе идентификатора сеанса, который записывается в файл cookie на клиенте. Пока этот сеанс активен, клиенту, который подключается с этим идентификатором сеанса, будет предоставлен доступ к этому сеансу.
Есть некоторые страшные программы, такие как firesheep, которые могут показать вам, насколько легко получить идентификатор сеанса и сделать его своим. Если вы собираетесь основывать какую-либо безопасность на этом сеансе, вам нужно убедиться, что ВСЕ, что вы делаете, осуществляется через SSL, и вы должны создать какой-то второй уровень проверки, чтобы убедиться, что ваш сеанс не был взломан.
При всем при этом сеанс — отличное место для хранения постоянных значений, к которым вам потребуется обращаться в течение жизненного цикла пользовательского приложения.