Я начал использовать PHP пару месяцев назад. Ради создания системы входа в систему для моего веб-сайта я прочитал о файлах cookie и сеансах и их различиях (файлы cookie хранятся в браузере пользователя и сеансах на сервере). В то время я предпочел куки-файлы (а кому не нравятся куки-файлы ?!) и просто сказал: «кого это волнует? У меня нет ничего хорошего с хранением их на моем сервере», поэтому я решил использовать куки-файлы для мой дипломный проект бакалавра. Однако, после выполнения большей части моего приложения, я услышал, что для конкретного случая хранения идентификатора пользователя сеансы более подходящие. Поэтому я начал думать о том, что мне сказать, если жюри спросит меня, почему вы используете куки вместо сессий? Я имею именно эту причину (что мне не нужно хранить внутреннюю информацию о пользователе).? или это нечто большее?
Не могли бы вы рассказать мне о преимуществах / недостатках использования файлов cookie для сохранения идентификатора пользователя?
Спасибо вам всем в StackOverflow!
Ответы:
Концепция хранения постоянных данных при загрузке страниц для веб-посетителя. Файлы cookie хранятся прямо на клиенте. Сессии используют куки в качестве своего рода ключа, чтобы связать с данными, которые хранятся на стороне сервера.
Предпочтительно использовать сеансы, потому что фактические значения скрыты от клиента, и вы контролируете, когда истекает срок действия данных и они становятся недействительными. Если все это основано на куки, пользователь (или хакер) может манипулировать своими данными куки и затем воспроизводить запросы на ваш сайт.
Изменить: я не думаю, что есть какие-либо преимущества использования куки, кроме простоты. Посмотрите на это с другой стороны ... Есть ли у пользователя какая-либо причина знать свой номер ID? Как правило, я бы сказал, нет, пользователь не нуждается в этой информации. Выдача информации должна быть ограничена на основе необходимости знать. Что если пользователь изменит свой файл cookie на другой идентификатор, как отреагирует ваше приложение? Это риск для безопасности.
До того, как сессии были в моде, у меня была своя реализация. Я сохранил уникальное значение cookie на клиенте и сохранил свои постоянные данные в базе данных вместе с этим значением cookie. Затем при запросах страниц я сопоставил эти значения и получил свои постоянные данные, не позволяя клиенту контролировать, что это было.
источник
session_write_close();
когда вам это нужно. Прокрутить свой собственный уникальный идентификатор и сопоставить его с обычными cookie-файлами не так уж сложно, и все страницы будут красивыми и быстрыми.Основные идеи, чтобы различать эти два.
сессия:
Печенье:
Сессия предпочтительна, когда вам необходимо хранить кратковременную информацию / значения, такие как переменные для расчета, измерения, запроса и т. Д.
Куки-файлы предпочтительны, когда вам необходимо хранить долгосрочную информацию / значения, например учетную запись пользователя (так что, даже если они выключат компьютер на 2 дня, их учетная запись все еще будет входить в систему). Я не могу придумать много примеров для файлов cookie, так как они не используются в большинстве ситуаций.
источник
Это главное различие в вашем выборе,
Если вы хотите, чтобы идентификатор запоминался надолго, вам нужно использовать куки; в противном случае, если вы просто хотите, чтобы веб-сайт распознал пользователя только для этого посещения, тогда сеансы - это путь.
Сессии хранятся в файле, который сгенерирует ваш php сервер. Чтобы запомнить, какой файл предназначен для какого пользователя, php также установит cookie в браузере пользователя, который содержит этот идентификатор файла сеанса, поэтому при следующем посещении php прочитает этот файл и перезагрузит сеанс.
Теперь php по умолчанию очищает сеансы каждый интервал, а также соглашение об именах сессии делает его автоматически истекающим. Кроме того, браузеры не будут сохранять cookie-файл, содержащий идентификатор сеанса, после закрытия браузера или очистки истории.
Важно отметить, что в настоящее время браузеры также поддерживают другой тип механизмов хранения, таких как LocalStorage, SessionStorage и другие механизмы webdb, которые код JavaScript может использовать для сохранения данных на вашем компьютере, чтобы запомнить вас. Например, если вы откроете консоль javascript внутри Facebook и наберете «localStorage», вы увидите все переменные, которые Facebook использует для запоминания вас без файлов cookie.
источник
когда вы сохраняете #ID в качестве файла cookie для распознавания вошедших в систему пользователей, вы фактически показываете данные пользователям, которые не связаны с ними. Кроме того, если третья сторона попытается установить случайные идентификаторы в качестве данных cookie в своем браузере, она сможет убедить сервер в том, что они пользователь, а на самом деле нет. Это отсутствие безопасности.
Вы использовали куки, и, как вы сказали, вы уже завершили большую часть проекта. Кроме того, cookie имеет право оставаться надолго, в то время как сеансы заканчиваются быстрее. Так что сессии не подходят в этом случае. На самом деле многие известные и популярные веб-сайты и службы используют cookie, и вы можете оставаться в системе в течение длительного времени. Но как вы можете использовать их метод для создания более безопасного процесса входа?
Идея такова: вы можете помочь в использовании файлов cookie: если вы используете случайные ключи вместо идентификаторов для распознавания вошедших в систему пользователей, во-первых, вы не пропускаете свои первичные данные случайным пользователям, а во-вторых, если вы рассматриваете случайные достаточно большой ключ, любому будет сложнее угадать ключ или создать случайный. например, вы можете сохранить ключ длиной 40, например, в браузере пользователя: «KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn», и для кого-то будет меньше шансов создать точный ключ и притвориться кем-то другим.
источник
Короткий ответ
Правила упорядочены по приоритету:
Источник: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Подробный ответ
Печенье
сессии
Соответствующий выбор
Сессии используют куки! Данные сеанса хранятся на стороне сервера, но UID хранится на стороне клиента в файле cookie. Это позволяет серверу сопоставлять заданного пользователя с правильными данными сеанса. UID защищен и его трудно взломать, но он не является неуязвимым. Для конфиденциальных действий (изменение электронной почты или сброс пароля) не полагайтесь ни на сеансы, ни на файлы cookie: запросите пароль пользователя для подтверждения действия.
Конфиденциальные данные никогда не должны храниться в файлах cookie (электронные письма, зашифрованные пароли, личные данные ...). Помните, что данные хранятся на стороннем компьютере, и если компьютер не является частным (классные или общедоступные компьютеры), кто-то другой может потенциально прочитать содержимое файлов cookie.
Данные « Помни меня» должны храниться в файлах cookie, иначе данные будут потеряны, когда пользователь закроет браузер. Однако не сохраняйте пароль или личные данные пользователя в cookie-файле «запомнить меня». Сохраните пользовательские данные в базе данных и свяжите эти данные с зашифрованной парой ID / ключ, хранящейся в cookie.
После рассмотрения предыдущих рекомендаций, наконец, следующий вопрос, который поможет вам выбрать между куки и сессиями:
Должны ли сохраняться постоянные данные, когда пользователь закрывает браузер?
источник
На самом деле, сессия и куки не всегда разные вещи. Часто, но не всегда, сессия использует куки.
Здесь есть несколько хороших ответов на ваш вопрос. Поскольку ваш вопрос конкретно касается сохранения пользовательского IDU (или идентификатора), я не думаю, что он является дубликатом этих других вопросов, но их ответы должны помочь вам.
куки против сессии
Cache VS Session VS куки?
В чем разница между сессией и cookie?
источник
Я лично использую и куки, и сессию.
Файлы cookie используются только когда пользователь нажимает на кнопку «запомнить меня» . а также куки-файлы шифруются, а данные дешифруются только на сервере. Если кто-то попытается отредактировать куки, наш дешифратор сможет обнаружить его и отклонить запрос.
Я видел очень много сайтов, на которых информация для входа хранится в файлах cookie , и любой может просто изменить идентификатор пользователя и имя пользователя в файлах cookie, чтобы получить доступ к любой учетной записи.
Спасибо,
источник
Сессия и Cookie не одно и то же.
Сессия используется для хранения информации с веб-страниц. Обычно у веб-страниц нет памяти для хранения этой информации. Но используя мы можем сохранить необходимую информацию.
Но Cookie используется для идентификации пользователей. Используя cookie, мы можем хранить данные. Это небольшая часть данных, которые будут храниться в веб-браузере пользователя. Таким образом, каждый раз, когда пользователь просматривает браузер в следующий раз, отправляет обратно информацию о файлах cookie на сервер для получения предыдущих действий.
Кредиты: сессия и печенье
источник
Сеансы позволяют хранить отдельные фрагменты информации, как при использовании файлов cookie, но данные хранятся на сервере, а не на клиенте.
источник
Как говорили другие, сессии являются умными и имеют больше преимуществ скрывать информацию от клиента.
Но у Cookie все еще есть по крайней мере одно преимущество : вы можете получить доступ к своим Cookies из Javascript (например, ngCookies ). В сеансе PHP вы не можете получить к нему доступ за пределами сценария PHP.
источник
Я выберу сессию, в первую очередь сессия более безопасна, чем куки, куки - это данные сайта клиента, а сессия - данные сайта сервера. Cookies используются для идентификации пользователя, потому что это небольшие кусочки кода, которые встроены в мой сервер через браузер компьютера пользователя. С другой стороны, Session поможет вам защитить вашу личность, потому что веб-сервер не знает, кто вы, потому что HTTP-адрес меняет состояние с 192.168.0.1 на 765487cf34ert8ded… или что-то еще, нумерация с помощью методов GET и POST. Сеанс хранит данные пользователя в сеансе с уникальным идентификатором, который даже не совпадает. Сессия хранит одну пользовательскую информацию на всех страницах одного приложения. Срок действия файлов cookie устанавливается с помощью setcookies (), тогда как срок действия сессии не устанавливается, он истекает, когда пользователь отключает браузеры.
источник
Сеанс - это группа информации на сервере, которая связана с информацией cookie. Если вы используете PHP, вы можете проверить сессию. сохранить _ путь к месту и на самом деле "увидеть сессии". Файл cookie - это фрагмент данных, отправляемых и возвращаемых клиентами. Файлы cookie часто используются для облегчения сеансов, поскольку они сообщают серверу, какой клиент обработал какой сеанс. Есть и другие способы сделать это (запрос строки магии и т. Д.), Но куки, вероятно, наиболее распространены для этого.
источник