Куки файлы против сеансов

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

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

+123
источник поделиться
10 ответов

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

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

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

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

+136
источник

Основные идеи для различения этих двух.

Сеанс:

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

Cookies

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

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

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

+80
источник
SESSIONS ENDS WHEN USER CLOSE HIS BROWSER,

COOKIES ENDS DEPENDING ON THE LIFE TIME YOU SET FOR IT. SO IT CAN LAST FOR YEARS

Это основной diff. по вашему выбору,

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

надеюсь, что это поможет:)

+30
источник

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

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

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

+14
источник

Собственно, сеанс и файлы cookie не всегда являются отдельными вещами. Часто, но не всегда, сеанс использует файлы cookie.

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

cookie против сеанса

Cache VS Session VS cookie

В чем разница между сеансом и Cookie?

+9
источник

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

+1
источник

Сессия и Cookie не совпадают.

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

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

Кредиты: Сессия и Cookie

+1
источник

Как говорили другие, сеансы умны и имеют больше преимуществ скрывать информацию от клиента.

Но Cookie по-прежнему имеет как минимум одно преимущество, вы можете получить доступ к своим файлам cookie из Javascript (например ngCookies). С помощью сеанса PHP вы не можете получить доступ к нему где-либо вне PHP скрипт.

0
источник

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

0
источник

Я лично использую как файлы cookie, так и сеансы.

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

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

Спасибо,

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос