Печенье против сессий - PullRequest
166 голосов
/ 06 июня 2011

Я начал использовать PHP пару месяцев назад.Ради создания системы входа в систему для моего веб-сайта я прочитал о файлах cookie и сеансах и их различиях (файлы cookie хранятся в браузере пользователя и сеансах на сервере).В то время я предпочел куки-файлы (а кому не нравятся куки-файлы ?!) и просто сказал: «кого это волнует? У меня нет ничего хорошего с хранением их на моем сервере», поэтому я решил использовать куки-файлы длямой дипломный проект бакалавра.Однако, после выполнения большей части моего приложения, я услышал, что для конкретного случая хранения идентификатора пользователя сеансы более подходящие.Поэтому я начал думать о том, что мне сказать, если жюри спросит меня, почему вы используете куки вместо сессий?Я имею именно эту причину (что мне не нужно хранить внутреннюю информацию о пользователе).Этого достаточно как причина ?или это нечто большее?Не могли бы вы рассказать мне о преимуществах / недостатках использования файлов cookie для сохранения идентификатора пользователя?

Спасибо вам всем в StackOverflow!

Ответы [ 11 ]

203 голосов
/ 06 июня 2011

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

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

Редактировать: я не думаю, что есть какие-либо преимущества использования куки, кроме простоты. Посмотрите на это с другой стороны ... Есть ли у пользователя какая-либо причина знать свой номер ID? Как правило, я бы сказал, нет, пользователь не нуждается в этой информации. Выдача информации должна быть ограничена на основе необходимости знать. Что если пользователь изменит свой файл cookie на другой идентификатор, как отреагирует ваше приложение? Это угроза безопасности.

До того, как сессии были в моде, у меня была своя реализация. Я сохранил уникальное значение cookie на клиенте и сохранил свои постоянные данные в базе данных вместе с этим значением cookie. Затем при запросах страниц я сопоставил эти значения и получил свои постоянные данные, не позволяя клиенту контролировать, что это было.

110 голосов
/ 06 июня 2011

Основные идеи, чтобы различать эти два.

Сессия:

  1. IDU хранится на сервере (то есть на стороне сервера)
  2. Безопаснее (из-за 1)
  3. Срок действия не может быть установлен, переменные сеанса истекают, когда пользователи закрывают браузер. (в настоящее время он хранится 24 часа по умолчанию в php)

Куки:

  1. IDU хранится в веб-браузере (то есть на стороне клиента)
  2. Не очень безопасно, так как хакеры могут получить и получить вашу информацию (из-за 1)
  3. Можно установить срок действия (см. setcookies () для получения дополнительной информации)

Сессия предпочтительна, когда вам нужно хранить кратковременную информацию / значения, такие как переменные для вычисления, измерения, запроса и т. Д.

Файлы cookie предпочтительны, когда вам необходимо хранить долгосрочную информацию / значения, например учетную запись пользователя (чтобы даже после выключения компьютера на 2 дня их учетная запись все еще входила в систему). Я не могу придумать много примеров файлов cookie, так как они не используются в большинстве ситуаций.

40 голосов
/ 06 июня 2011
SESSIONS ENDS WHEN USER CLOSES THEIR BROWSER,

COOKIES END DEPENDING ON THE LIFETIME YOU SET FOR IT. SO THEY CAN LAST FOR YEARS

Это главное различие в вашем выборе,

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

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

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

Важно отметить, что в настоящее время браузеры также поддерживают другие типы механизмов хранения, такие как LocalStorage, SessionStorageи другие движки webdb, которые код javascript может использовать для сохранения данных на вашем компьютере, чтобы запомнить вас.Например, если вы откроете консоль javascript внутри Facebook и наберете «localStorage», вы увидите все переменные, которые Facebook использует для запоминания вас без файлов cookie.

20 голосов
/ 11 августа 2012

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

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

вот в чем идея: вы можете помочь при использовании файлов cookie: если вы используете случайные ключи вместо идентификаторов для распознавания вошедших в систему пользователей, во-первых, вы не пропускаете свои первичные данные случайным пользователям, а во-вторых, если вы Рассмотрим случайный ключ достаточно большой. Любому будет сложнее угадать ключ или создать случайный ключ. например, вы можете сохранить ключ длиной 40, например, в браузере пользователя: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" и вряд ли кто-то создаст точный ключ и притворится кем-то другим.

12 голосов
/ 06 июня 2011

На самом деле, сессия и куки не всегда разные вещи. Часто, но не всегда, сессия использует куки.

Здесь есть несколько хороших ответов на ваш вопрос. Поскольку ваш вопрос касается сохранения пользовательского IDU (или идентификатора), я не думаю, что он является дубликатом этих других вопросов, но их ответы должны вам помочь.

куки против сессии

Cache VS Session VS cookie?

В чем разница между сеансом и файлом cookie?

8 голосов
/ 04 октября 2017

Я лично использую и куки, и сеанс.

Файлы cookie используются только в том случае, если пользователь установил флажок "запомнить меня" . а также файлы cookie зашифрованы и только данные расшифровывают на сервере. Если кто-то попытается отредактировать куки, наш дешифратор сможет обнаружить его и отклонить запрос.

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

Спасибо

2 голосов
/ 20 октября 2014

Сеанс и Cookie не одно и то же.

Сеанс используется для хранения информации с веб-страниц.Обычно на веб-страницах нет памяти для хранения этой информации.Но используя мы можем сохранить необходимую информацию.

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

1 голос
/ 15 января 2013

Сеансы позволяют хранить отдельные фрагменты информации так же, как и с файлами cookie, но данные сохраняются на сервере, а не на клиенте.

0 голосов
/ 09 февраля 2019

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

0 голосов
/ 15 февраля 2017

Я выберу сессию, в первую очередь сессия более безопасна, чем куки, куки - это данные сайта клиента, а сессия - данные сайта сервера. Cookies используются для идентификации пользователя, потому что это небольшие кусочки кода, которые встроены в мой сервер через браузер компьютера пользователя. С другой стороны, Session поможет вам защитить вашу личность, потому что веб-сервер не знает, кто вы, потому что HTTP-адрес меняет состояние с 192.168.0.1 на 765487cf34ert8ded… или что-то еще, нумерация с помощью методов GET и POST. Сеанс хранит данные пользователя в сеансе с уникальным идентификатором, которые даже не могут совпадать с идентификатором пользователя. Сессия хранит одну пользовательскую информацию на всех страницах одного приложения. Срок действия файлов cookie устанавливается с помощью setcookies (), тогда как срок действия сессии не устанавливается, он истекает, когда пользователь отключает браузеры.

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